一个简单的RESTful例子

首先我们创建一个逻辑类,它负责逻辑运算。

我们可以创建自己的方法和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

右键激活服务后,用户就可以通过路径和服务名称调用服务了。它们合起来也就是前面代码里的服务地址了。

猜你喜欢

转载自www.cnblogs.com/Intercalaryland/p/11099431.html