云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

华为云_服务器版操作系统_稳定性好

小七 141 0

为了保护在SAP云平台ABAP环境上运行的OData服务免受恶意客户端的攻击,如果客户端不使用适当的客户端分页,ABAP RESTful编程模型将强制执行OData协议定义的服务器端分页。

适当表示必须使用$top,并且$top不应大于5000。如果它大于5000,比如10500,调用方将只接收5000个条目,因为框架强制执行硬编码的服务器端分页。此外,客户端还将获得下一个链接,物联网大赛,该链接在响应末尾带有$skiptoken。

如果未使用$top,框架将响应限制为100个实体,并将添加下一个链接以检索其余实体。

强制服务器端分页对于任何支持OData协议的客户端来说都应该不是问题,因为OData客户端OData协议中规定的"必须将下一个链接的URL视为不透明的"。

但对于使用SAP UI5以外的客户端库的开发人员来说,这可能会让他们感到意外。虽然SAPUI5表控件会自动使用适当的客户端查询选项($top和$skip),但使用非SAPUI5客户端库(如.NET)的开发人员可能会想,为什么不管使用什么查询选项,什么是大数据,服务都只返回100个实体。这些开发人员只需实现对客户端分页的支持,并且必须使用$top和$skip。

因此,如果您打算使用具有第三方客户端库的OData服务,或者如果您开发了不支持自动处理适当客户端的自定义UI5控件,那么本文只是您的必读资料SAPUI5中的表控件提供的分页

服务器端分页–强制

假设您已注册SAP云平台环境的试用版,网络云服务器,并已为he服务定义/DMO/TRAVEL###创建了服务绑定Z_SKIPTOKEN#TEST#####################如果您在自己的包Z如果将#####替换为三位数字或三个字符的唯一组合(这里我选择了AFI)。

激活本地服务端点后。

您可以单击链接服务URL,永久免费的云服务器,而不是启动SAP Fiori Elements预览。您现在可以使用浏览器中的以下URL检索预订数据

(其中#####表示字符/数字的唯一组合)

因此您将得到如下响应:

请注意提要的最后一个条目:

因为您可以看到ABAP运行时只返回100个对象,并向客户端的响应添加一个链接可以跟随获取剩余的条目。

由于前100个条目已经由服务器传递,下一个链接包含查询选项$skiptoken=100。

通过客户端分页限制响应

如果客户端通过添加例如查询选项$top=200来使用客户端分页,服务器将不强制服务器端因此,分页和响应将不包含带有skiptoken的链接。

请求:

响应:

强制执行服务器端分页–第2部分

但是,如果我们的恶意客户端使用客户端分页,但试图通过使用$top的巨大值(例如$top=10500)检索大型响应,会发生什么情况?

在这种情况下,OData框架再次强制服务器端分页,只返回5000个实体:

响应的最后一个条目将包含以下下一个链接:

因此客户端必须发送两个额外的请求来获取所有10500个实体,即

最后

最后一个响应将再次不包含下一个链接。

注意-自定义实体的实现

如果您实现一个自定义实体,其中数据通过您自己的ABAP代码检索,您将遇到一个问题:如果您的实现不处理,云是什么,将引发异常CX\u RAP\u QUERY\u NOT\u FULLY\u IMPLMTD服务器端分页。

因此您的编码必须调用get\u分页方法评估此方法的结果,并根据客户端请求的页面大小和偏移量返回结果。

get\u分页处理的适当实现可以在我下面的博客中找到

如何在ABAP RESTful中实现自定义实体使用远程功能模块的编程模型