SAP发布简易REST 二:API平台之接口配置
API接口平台设计:(全JSON格式)
做ABAP的都知道,一般接口的处理都是封装个函数来单独处理。那么这些函数能不能做成配置呢?又以什么形式的参数来传入传出呢?
ps:到目前为止,只是有点想法,所以现在以及后面的文章可能都是临时起意的,不好的地方看看就好,好的地方。。。你也不用给钱。
前面设计了用户验证的API,后来试了token,好像不行。所以要么以后要么就是接口验证,要么就是登陆验证。
下面说说设计想法:(思路初版,后续可能有更新的部分)
1.设置接口参数对应函数配置表:
2.在统御API中,获取URL参数,BODY参数,HEADER参数等,匹配1中的配置表
3.动态调用2中对应的函数,并处理返回参数。
好,开始干。。。
一,创建配置表,配置接口对应处理的函数:

二,创建实施类:沿用前面的ZCRM_REST类,修改处理方法。
METHOD if_http_extension~handle_request.
TYPES:BEGIN OF ty_retu,
success TYPE string,
access_token TYPE string,
message TYPE string,
END OF ty_retu. DATA: lt_fields TYPE tihttpnvp,
lv_data TYPE string,
lv_retu TYPE string,
gw_retu TYPE ty_retu,
lv_ifid TYPE string,
lv_method TYPE string,
gw_api TYPE zapi_control. FIELD-SYMBOLS: <fs_field> LIKE LINE OF lt_fields. lv_ifid = server->request->get_form_field( name = 'IFID' )."GET INTERFACE ID
lv_method = server->request->get_header_field( name = '~request_method' )."GET INTERFACE METHOD
"CHECK CONTROL TABLE
SELECT SINGLE * INTO gw_api FROM zapi_control WHERE zif_id = lv_ifid AND zmethod = lv_method. IF sy-subrc <> 0.
gw_retu-success = 'E'.
gw_retu-message = 'Called Error,Please check the url or method!'. lv_retu = /ui2/cl_json=>serialize(
data = gw_retu
pretty_name = 'L'
compress = abap_true ).
ELSE.
CASE gw_api-zflag."used flag
WHEN 'X'.
*""GET HTTP MESSAGE BODY
lv_data = server->request->if_http_entity~get_cdata( ). "call method
CALL FUNCTION gw_api-zpro_fm
EXPORTING
input = lv_data
IMPORTING
output = lv_retu. WHEN ''.
gw_retu-success = 'E'.
gw_retu-message = 'Interface Not Used!'. lv_retu = /ui2/cl_json=>serialize(
data = gw_retu
pretty_name = 'L'
compress = abap_true ).
WHEN OTHERS.
ENDCASE.
ENDIF. "SET RETURN DATA
server->response->set_cdata(
EXPORTING
data = lv_retu " Character data
). ENDMETHOD.
测试:

三,封装测试函数:
FUNCTION zly01.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT) TYPE STRING
*" EXPORTING
*" REFERENCE(OUTPUT) TYPE STRING
*"----------------------------------------------------------------------
TYPES:BEGIN OF ty_retu,
success TYPE string,
access_token TYPE string,
message TYPE string,
END OF ty_retu. DATA: gw_retu TYPE ty_retu. gw_retu-success = 'S'.
gw_retu-message = 'PRO!'. output = /ui2/cl_json=>serialize(
data = gw_retu
pretty_name = 'L'
compress = abap_true ). ENDFUNCTION.
四,测试:


这里把函数的参数限制死了,后面有时间的话可以用param table。。。先这样用着。
SAP发布简易REST 二:API平台之接口配置的更多相关文章
- 一些SAP Partners能够通过二次开发实现打通C/4HANA和S/4HANA的方法介绍
有好几位朋友在公众号后台给我留言询问SAP C/4HANA和S/4HANA集成的方案. 尽管我给这些朋友推送了一个方案:打通C/4HANA和S/4HANA的一个原型开发:智能服务创新案例,然而我得到的 ...
- SAP S4CRM 1811 服务订单API介绍
Jerry在今年2月28日,SAP Customer Management for S/4HANA 1.0正式问世这个具有纪念意义的日子,同时发布了中英文版的博客进行介绍. 英文版发在SAP社区上,至 ...
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...
- EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解
背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...
- 【HANA系列】SAP HANA XS的JavaScript API详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS的Java ...
- 【二十九】php之简易微信二维码支付
参考二维码支付接口文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 index.php <!DOCTYPE htm ...
- BlueMind 3.0.17 发布,消息和协作平台
BlueMind 3.0.17 发布,此版本对即时消息 Web 应用连接处理做了较大改进(更可靠),还修复了通讯录浏览器. BlueMind 3.0.17 现已提供下载. 详细改进记录如下: Addr ...
- 免费第三方API平台整合
各大平台免费接口,非常适用 http://developer.51cto.com/art/201412/458778.htm 绝对干货:供个人开发者赚钱免费使用的一些好的API接口http://www ...
- 微信公众平台通用接口API指南
微信公众平台 通用接口 消息接口 开发模式 作者:方倍工作室原文:http://www.doucube.com/index.php?m=Article&a=show&id=5 微信公众 ...
- 【HANA系列】【第五篇】SAP HANA XS的JavaScript API详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第五篇]SAP HANA XS ...
随机推荐
- 搭建自己的OCR服务,第二步:PaddleOCR环境安装
PaddleOCR环境安装,遇到了很多问题,根据系统不同问题也不同,不要盲目看别人的教程,有的教程也过时了,根据实际情况自己调整. 我这边目前是使用windows 10系统+CPU + python ...
- 使用Avalonia/C#构建一个简易的跨平台MCP客户端
前言 前几天介绍了在C#中构建一个MCP客户端. 最近正在学习Avalonia,所以就想用Avalonia实现一个简易的跨平台MCP客户端.接入别人写的或者自己写的MCP服务器就可以利用AI做很多有意 ...
- Linux® 容器
是与系统其他部分隔离开的一系列进程.运行这些进程所需的所有文件都由另一个镜像提供,这意味着从开发到测试再到生产的整个过程中,Linux 容器都具有可移植性和一致性.因而,相对于依赖重复传统测试环境的开 ...
- Docker swarm集群增加节点
docker swarm初始化 docker swarm init docker swarm 增加节点 在已经初始化的机器上执行:# docker swarm join-token manager T ...
- Unsloth更快训练大模型并导出GGUF - Windows
环境搭建 系统环境 需要Nvidia显卡,至少8G显存,且专用显存与共享显存之和大于20G 建议将非安装版的环境文件都放到非系统盘,方便重装或移植 以Windows11为例,非安装环境文件都放在 E ...
- Ubuntu截屏工具推荐
Ubuntu截屏工具推荐 本篇博文推荐Ubuntu下的截屏工具Flameshot,可以作为Windows下Snipaste截图工具的平替. GitHub地址:https://github.com/fl ...
- DTMF从2833到inband的方案
概述 freeswitch是一款简单好用的VOIP开源软交换平台. 之前的文章中介绍过通过dialplan拨号计划配置的方法,实现2833到inband的转换,但是实际生产环境中的场景会更复杂,无法预 ...
- Koin 依赖注入: 在 Android 模块化项目中定义 Room 数据库的最佳实践
前置 本文发布于个人小站:https://wavky.top/db-in-multi-modules/ 欢迎移步至小站,关注更多技术分享,获得更佳阅读体验 (不保证所有技术文章都会同步发表到博客园) ...
- 经典常用SQL查询语句和常见问题
一.基础 1.常用sql: ------------------------ // mysql改root密码 mysqladmin -u用户名 -p旧密码 password 新密码 # ---more ...
- 【doctrine/orm】findBy用法
用法: //$condition array('表字段对应的entity的属性'=>'值') //$orderBy array('表字段'=>'ASC/DESC') //$count in ...