首先我们创建一个逻辑类,它负责逻辑运算。
我们可以创建自己的方法和signature,里面是运算逻辑。这个类还不能用于集成,我们还需要一个解析类。
创建解析类ZCL_DEMO_HANDLER。它需要继承IF_HTTP_EXTENSION和IF_REST_APPLICATION两个接口。我们要实现解析逻辑,则需要重写HANDLE_REQUEST方法,该方法将用于解析HTTP传来的指令。
HANDLE_REQUEST方法只有一个参数SERVER,但是该参数有很多字段。
首先我们在常量中,需要注册服务的URI,这里是/SAP/BC/ZDEMO/ZTESTING,后面的SICF配置中可以看到它是如何来的。
lt_input和wa_input用于存放JSON转换的数据,如果JSON外部有中括号,则会转换成内表,如果没有则会转换成工作区。
lv_result则用于存放逻辑运算的返回值。
因为逻辑类有3个input和1个output,所以这里也是3个输入字段和1个返回字段
接入参数如图,这个应用比较简单,则只需要解析URI和JSON即可。
常用的参数有:
- Lv_method: 即HTTP方法
- Lv_parameter: 即URI后面的显式QUERY
- Lv_langu: 即语言
- Lv_path: 即URI
- Lv_host: 即服务器地址
- Lv_agent: 即用户agent
- Lv_token: 即用户token,可用于权限控制
- Lv_body: 即JSON字符串
运算部分,如果收到的URI对应本服务,则调用逻辑类的方法并计算。
这里以JSON返回计算结果。
创建好逻辑类和解析类,还需要在SICF中注册服务。我们创建了一个叫ZDEMO的节点下的ZTESTING服务。
ZTESTING服务需要设置账号密码。
ZTESTING服务也还需要设置解析类,即ZCL_DEMO_HANDLER。
右键激活服务后,用户就可以通过路径和服务名称调用服务了。它们合起来也就是前面代码里的服务地址了。