首页 > 编程知识 正文

SAP Http接口——通过RESTful实现

时间:2023-05-06 03:47:39 阅读:36768 作者:4382

最近接到一个需求,用户希望SAP发布Json格式的http接口,在此感谢万能的朋友以及度娘,划水的时候抽空写了下面的Demo,下面开始展示:

嗯,是的这种接口方法适用于觉得web服务XML格式太低、太麻烦、Odata太复杂的外围系统tmd。

啪啪地用力敲代码,要求更多和更多,烦躁不安。

懒惰,我觉得http法中的3358www.Sina.com/,PutPatch真的没什么用,所以这次是http://www.Sina .

以下是发布sap rest风格界面的所有进程目录: 1.GUI端代码1 .定义类ZCL_RESTFUL_TEST2.Get事件3.Post事件2.GUI端配置TCode:SICF配置服务3.Postman调试Postman用法1.GUI端配置

类-将Delete添加到接口。 如下图所示

在类-方法中,弹出Get,如下图所示

单击Post。 新创建的没有代码。 必须从传入的Server中调用类3358www.Sina.com/和IF_HTTP_EXTENSION,以处理参数并发送处理消息。 我不会详细说明这两个班

2.Get事件将传入的值处理得咔嚓咔嚓,写SQL或调整FM,最后用SET_CDATA发出。 没什么好说的。 有手就能行。

代码如下。

data : lt _ fieldstypetihttpnvp,s_carrid TYPE rseloption,s_connid TYPE rseloption, 适用于LV _ content _ typetypestring.LV _ content _ type string读取的文件* 数据(LV _ query )=server-request-get _ header _ field ((~query _ string ).) ifLV_queryisinitial.) ) if 请确认。 (() return.*endif.* translateLV_querytoupppercatur传递适当的值server-request-get _ form _ fields (changing fields=lt _ fields ).iflt _ field esponse-set _ status (代码=404 reason='不查询传递的参数,' ) 检查. return.endif.loopatlt _ fieldsassigningfield-symbol (fs ).translate fs-nametouppercase.casefs-name.wame rid.when ' connid '.append value # (sign=' I ' option=' eq tos _ connid.end case.end loop.select * fromsflightintotable @ data (lt _ SF light ) ) wherecarridin @ s _ carridandconnidin @ s _ connid.' setsthehehttpbodyofththd

->set_cdata( /ui2/cl_json=>serialize( data = lt_sflight"将内表转换为json传出 compress = abap_true pretty_name = /ui2/cl_json=>pretty_mode-camel_case ) ). " Sets current HTTP status code server->response->set_status( code = 200 reason = 'OK' ). lv_content_type = 'application/json'. " Set the Body Type (Text/HTML, for example) server->response->set_content_type( lv_content_type ). 3.Post事件

和GET类似,瞅瞅代码就行(需要注意一点,代码还是尽可能复用比较好,少些一点是一点,这里用了action区分不同的处理类,如果有需要可以通过action来区分,我比较懒,就略过了- -)

代码如下:

DATA: BEGIN OF ls_request, action TYPE string, " 可以用来区分具体对应的处理类 data TYPE TABLE OF sflight, " 表结构 END OF ls_request, lv_json TYPE string, lt_sflight TYPE TABLE OF sflight, lv_content_type TYPE string. " Delivers the HTTP body of this entity as character data lv_json = server->request->get_cdata( ). IF lv_json IS INITIAL. server->response->set_status( code = 404 reason = '未解析到Body参数,请检查' ). RETURN. ENDIF. " 将Json转换成内表 /ui2/cl_json=>deserialize( EXPORTING json = lv_json CHANGING data = ls_request ). CASE ls_request-action. WHEN 'SFLIGHT'. WHEN OTHERS. server->response->set_status( code = 404 reason = '未解析到对应Action,请检查' ). RETURN. ENDCASE. IF ls_request-data IS NOT INITIAL. lt_sflight = ls_request-data. ENDIF. MODIFY sflight FROM TABLE lt_sflight. " Sets the HTTP body of this entity to the given char. data server->response->set_cdata( /ui2/cl_json=>serialize( data = 'Success' " 将内表转换为json传出 compress = abap_true pretty_name = /ui2/cl_json=>pretty_mode-camel_case ) ). " Sets current HTTP status code server->response->set_status( code = 200 reason = 'OK' ). lv_content_type = 'application/json'. " Set the Body Type (Text/HTML, for example) server->response->set_content_type( lv_content_type ). 二.GUI端配置 TCode:SICF 配置服务


从步骤1->3即可,具体配置参数如下:



创建成功之后我们激活服务,然后点击测试服务,即可弹出我们需要的http接口URL。

三.Postman调试 Postman使用方法

接口调试,最近一直用的Postman,Runapi之类的也可以,官网下载即可,具体怎么操作,大家百度百度百度度。

Get方法的大致步骤如下,填入传入的carrid和connid,返回具体的数据:

Post方法大致步骤如下,填入Body,返回参数Success:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。