关于 SAP Gateway 响应头部 Last Modified 字段的赋值逻辑

简介: 关于 SAP Gateway 响应头部 Last Modified 字段的赋值逻辑

本教程迄今为止,讨论的绝大多数都是 OData 服务数据实现类(Data Provider Class) 的实现。而要讨论 OData 服务的元数据话题,就得去 MPC 类研究。


a27cf949888be072f330108b349c47ed.png

MPC 类的 define 方法,负责生成 OData metadata 元数据:

acb9946e703a8403ef0377914408e9cd.png

Postman 里请求元数据:

de5458fb5869aabb2291b3fe39806036.png


/iwcor/cl_ds_svc_proc 的 get_supported_formats, 对于不同类型的请求,返回不同的支持的格式列表.

image.png

对于 metadata 元数据请求,只支持 xml 格式:

image.png

从配置表里读取缓存是否激活:

3d91ae8c08aa71bf6f8f64b42e518d19.png

- 代表 abap_false

b7f418ff7cb8b1182bb92f698a6ab529.png

71fe0f270e29b1274333568da5920e57.png

要读取 HTTP 请求标头 if-modified-since,应用程序开发人员可以使用方法 /IWBEP/CL_MGW_REQUEST=>GET_IF_MODIFIED_SINCE()。

例子代码:

DATA lv_if_modified_since TYPE tzntstmps.
lv_if_modified_since = io_tech_request_context->get_if_modified_since( ).


如果导出参数 ES_RESPONSE_CONTEXT-MAX_AGE 设置为一个值,则 SAP Gateway 将生成带有 max-age 指令的 HTTP 响应标头缓存控制。


请注意,如果导出参数 ES_RESPONSE_CONTEXT-MAX_AGE 设置为一个值,则还必须将导出参数 ES_RESPONSE_CONTEXT-DO_NOT_CACHE_ON_CLIENT 设置为 -(意思是 可以缓存)。


默认行为:如果导出参数 ES_RESPONSE_CONTEXT-DO_NOT_CACHE_ON_CLIENT 未定义(即设置为 ``),则系统会自动将 ES_RESPONSE_CONTEXT-DO_NOT_CACHE_ON_CLIENT 的默认值设置为值“X”,SAP Gateway 将生成以下 HTTP 响应标头:

cache-control: no-store, no-cache

导出参数 ES_RESPONSE_CONTEXT-LAST_MODIFIED 应填充时间戳,指示相关业务数据的最后一次更改发生的时间。 如果 ES_RESPONSE_CONTEXT-LAST_MODIFIED 填充了时间戳,则 SAP Gateway 将生成具有相关日期的最后修改的 HTTP 响应标头:


last-modified: Tue, 27 Nov 2012 09:41:40 GMT


此外,如果导出参数 ES_RESPONSE_CONTEXT-LAST_MODIFIED 包含的时间戳早于 HTTP 请求标头 if-modified-since,则 SAP Gateway 将发送 HTTP 304 响应(“未修改”)。在这种情况下,将不会发送最后修改的 HTTP 响应标头。


导出参数 ES_RESPONSE_CONTEXT-IS_NOT_MODIFIED 仅在应用程序数据的 LAST_MODIFIED 早于 HTTP 请求标头 if-modified-since 中的时间戳的情况下才可以设置为 ABAP_TRUE。 在这种情况下,相关的申请数据是最新的,根本不需要发送。 然后 SAP Gateway 将生成 HTTP 304 响应(“未修改”)。

相关文章
|
8月前
|
安全 测试技术 数据安全/隐私保护
SAP Commerce Cloud Backoffice site 里 Require Authentication 字段的作用
SAP Commerce Cloud Backoffice site 里 Require Authentication 字段的作用
|
1月前
|
数据库
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
|
1月前
|
XML 存储 JavaScript
关于 SAP Fiori Elements List Report 里的 TableCell.fragment.xml 头部声明
关于 SAP Fiori Elements List Report 里的 TableCell.fragment.xml 头部声明
SAP Fiori Elements 应用里图片字段(Image)的显示原理介绍试读版
SAP Fiori Elements 应用里图片字段(Image)的显示原理介绍试读版
|
1月前
|
UED
使用 SAP CRM Application Enhancement Tool 创建类型为下拉菜单的扩展字段
使用 SAP CRM Application Enhancement Tool 创建类型为下拉菜单的扩展字段
|
1月前
|
移动开发 开发框架 JavaScript
什么是 SAP UI5 项目 ui5.yaml 文件中的 specVersion 字段
什么是 SAP UI5 项目 ui5.yaml 文件中的 specVersion 字段
|
1月前
|
存储 数据库
SAP ABAP 里如何高效找到修改某个数据库表字段的 ABAP 程序的三种思路介绍试读版
SAP ABAP 里如何高效找到修改某个数据库表字段的 ABAP 程序的三种思路介绍试读版
|
7月前
|
API
SAP OData V2 和 V4 里针对日期类型的字段进行过滤操作(filter)的正确语法试读版
SAP OData V2 和 V4 里针对日期类型的字段进行过滤操作(filter)的正确语法试读版
|
7月前
|
前端开发 开发者 容器
SAP Fiori Elements List Report 应用里 Header 字段的绑定路径
SAP Fiori Elements List Report 应用里 Header 字段的绑定路径
使用 ABAP 代码打印 SAP 系统指定订单的 Reference Currency 字段
使用 ABAP 代码打印 SAP 系统指定订单的 Reference Currency 字段