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

文件存储_修改数据库字段长度_免费领

小七 141 0

在这个博客中,我们尝试在OData服务中使用REST服务。这里我们使用OData服务的GET操作在使用REST服务时,使用HTTP方法作为POST发送请求消息,REST服务在应答时提供响应,并将响应映射到OData服务的结构。此博客是父博客的商业案例示例:SAP(Fiori)OData服务示例

在Fiori应用程序中,需要从非SAP系统访问数据。这个非sap系统有一个REST服务技术,用于与外部世界进行数据交换。因此,在fiori应用程序中,我们需要一个oData服务,它可以使用/与非sap的REST服务进行数据交换。注意:这里我们可以在fiori应用程序中直接使用REST服务,但我们建议通过oData服务访问REST服务,原因如下:在fiori服务器上部署fiori App时,访问REST服务时JavaScript代码的跨域问题

非sap系统的REST服务是sap FioriApp与非sap系统进行数据交换的媒介REST(representationalstatetransfer)是一种架构风格,它使用简单而轻量级的机制进行机器间通信。在本博客的示例中,此REST服务具有以下用于数据交换的组件:终结点URL:这包括http(s)、主机、端口和非SAP系统的RestProjectPath例如::/访问凭据:访问此REST服务所需的用户id和密码请求消息:这是相应REST服务所理解的输入格式,它运行其程序逻辑并相应地返回数据。以下是JASON输入格式:[{"任务ID":286079},{"任务ID":287571}]响应消息:这是我们在确认中从REST服务接收的输出消息格式。这里,输出格式如下:{"response":"成功","响应数据":{"response":"发布成功"},"错误":空,"错误列表":[]}REST服务使用的是"资源"而不是"操作"

为了使用上述REST服务,我们按照以下方式实现oData服务:创建具有两个属性的EntitySet:请求以给定的REST服务格式发送JSON输入回应从REST服务接收JSON输出。重新定义相应Enity的方法"GET\u ENTITYSET",大数据在线,在这里我们编写ABAP代码来使用REST服务。同样可以遵循以下详细步骤:

[1]创建EntityType和EntitySet

要创建OData服务,请转到SAP Firoi服务器t代码"SEGW"右键单击项目文件夹"实体类型"以创建实体名为"ConsumerSet"的EntitySet名为"ConsumerSet"创建两个属性(请求和响应)并将请求作为键。通过单击圆形图标(红色/白色)和项目选择保存并"生成运行时对象"。因此创建了EntitySet的元结构

[2]重新定义方法'ConsumeRESTSet\u GET\u EntitySet'

接下来我们需要重新定义方法'GET\u EntitySet',其中abap代码将被写入使用REST服务。此方法将具有以下功能:从ODataService的EntitySet"ConsumeRESTSet"的属性"REQUEST"获取输入使用此输入使用/触发REST服务在确认中,REST服务提供响应,提取响应并将其映射到属性"response"中oDataService的EntitySet"ConsumeRESTSet"要重新定义它们,请转到Odata服务项目的文件夹"Runtiime Artifacts"->选择"DPC\u EXT"class->双击它转到abap runtime workbench下面是"\u DPC\u EXT"类,我们在其中重新定义了"GET\u ENTITYSET"转到文件夹"\u DPC\u EXT"->文件夹"Methods"->文件夹"Inherited Methods"选择"ConsumeRESTSet\u GET\u ENTITYSET"方法->右键单击->选择"重定义"一旦重新定义了方法,它就会列在文件夹"Methods/Redefinitions"中我们用这种方法编写abap代码来完成以下任务:从ODataService的EntitySet"ConsumeRESTSet"的属性"REQUEST"读取输入通过发送输入并使用其端点url调用REST服务作为确认,REST服务提供响应,提取它并将其映射到属性"RESPONSE"中oDataService的EntitySet"ConsumeRESTSet"请注意:在重新定义GET\u实体时我们不能这样做,免费企业管理软件,因为GET\u过滤器在里面是不可访问的。下面是"ConsumeRESTSet\u GET\u ENTITYSET"方法的屏幕方法"ConsumeRESTSet\u GET\u ENTITYSET"中编写的ABAP代码如下:方法CONSUMERESTSET\u GET\u ENTITYSET。数据:lt\u filters TYPE/iwbep/t\u mgw\u select\u option,ls\过滤器类型/iwbep/s\ mgw\选择选项,ls\u so TYPE/iwbep/s\u cod\u select选项,LS\u CONSUMERESTSET TYPE ZCL\u ZTEST\u ODATA\u MPC=>TS\u CONSUMEREST。数据:lv\u RestSrvUrl TYPE STRING,"用于Http REST服务Url的Varlv\u HTTP\u CLIENT TYPE REF TO IF\u HTTP\u CLIENT,"Rest HTTP CLIENT的VarLV\ U请求类型字符串,LV\U响应类型字符串。*启动筛选器以从ODataService的EnitySet读取输入lt\u filters=io\u tech\u request\u context->get\u filter()->get\u filter\u select\u options()。*从EntitySet"CONSUMERESTSet"的属性"REQUEST"提取输入清除ls\ U过滤器。将表键属性为'REQUEST'的表lt\u filters读入ls\u filter。如果sy subrc EQ 0。将表ls\u filter-select\u options读入ls\u so索引1。如果sy subrc EQ 0。LV\ U请求=ls\ U so-low。结束。结束。*REST服务URLlv\u RestSrvUrl='http://:/'。*调用REST服务的步骤===================================*步骤1:创建HTTP客户端CALL METHOD CL\u HTTP\u CLIENT=>CREATE\u BY\u URL导出URL=lv\ U RestSrvUrl导入CLIENT=lv\u HTTP\u客户端例外情况参数\u NOT \u FOUND=1插件未激活=2内部错误=3其他=4.*第2步:验证HTTP客户端调用方法LV\u HTTP\u CLIENT->AUTHENTICATE导出用户名='服务\用户id'PASSWORD='服务密码'。*步骤3:为REST服务请求调用设置头调用方法lv\u HTTP\u CLIENT->REQUEST->SET\u HEADER\u FIELD导出名称='~请求\u方法'值='POST'。调用方法lv\u HTTP\u CLIENT->REQUEST->SET\u HEADER\u FIELD导出名称='内容类型'VALUE='应用程序/json;字符集=utf-8'。调用方法lv\u HTTP\u CLIENT->REQUEST->SET\u HEADER\u FIELD导出名称='接受'VALUE='应用程序/json,文本/html'。*步骤3.1:附加请求消息调用方法LV\u HTTP\u CLIENT->REQUEST->SET\u CDATA导出数据=LV\U请求偏移=0。*步骤4:发送HTTP请求调用方法lv\u HTTP\u CLIENT->SEND例外情况HTTP\通信\失败=1HTTP\无效\状态=2。*步骤5:获取HTTP响应调用方法lv\u HTTP\u CLIENT->RECEIVE例外情况HTTP\通信\失败=1HTTP\无效\状态=2HTTP\处理\失败=3。*步骤6:提取Rest服务响应清除LVU响应。LV\u RESPONSE=LV\u HTTP\u CLIENT->响应->获取cdata()。*步骤7:将Rest服务响应附加到ODataService的EntitySet清除LS\u设置。LS\u CONSUMERESTSET-REQUEST=LV\u请求。"追加发送的请求LS\u CONSUMERESTSET-RESPONSE=LV\u响应。"追加接收响应将LS\u consumertset附加到ET\u ENTITYSET。清除LS\u设置。结束方法。保存并激活此方法。

[3]测试消耗REST服务的OData服务