前言
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
GITHUB上有一个开源的ZCL_SWAG项目,我基于此基础做了一些优化,并加入了接口日志记录,本文将为大家介绍这个框架的使用方法。
项目结构介绍
项目整体结构如下
定义外部系统名称和描述
2\. 表ZTSWAG_IF
定义接口配置
存储接口日志
请求到达处理类后,具体由哪个类&方法来处理,在这个类中判断,并将最终结果返回给请求端;接口通用日志也在这个类中处理
HTTP处理类的基类,实现了IF_HTTP_EXTENSION接口。所有接口的请求都首先在这个类的if_http_extension~handle_request方法中处理。
6\. 类ZCL_SWAG_REST_HANDLER
HTTP处理类,继承了 Z CL_SWA G_BASE_HANDLER类。在SICF中配置接口的处理类,就填入这个类
7\. 类ZCL_SWAG_CONSUMER
实现了ZIF_SWAG_CONSUMER接口,最终端的接口处理类,这个类中可定义请求路由,每个不同的请求,由不同的类方法来处理,在类方法中进行业务处理,并最终返回数据给请求端
主要用来生成SWAGGER UI界面
接口方法META,定义请求路由
接口属性MV_BASE,定义请求的根路径
查询接口日志
实现过程
Z C L_SW AG_REST_HA NDLER 和 ZCL_SWAG_CONSUMER
类,用户可复制,自行定义接口的根路径、接口路由、接口处理逻辑。
1. 首先配置 ZTSWAG_EXT_SYS和 ZTSWAG_IF,见过程02
定义接口的根路径为'/zapi'
设置根路径为 路径为'/zapi'
实现meta方法, meta方法如下
METHOD zif_swag_consumer~meta. FIELD-SYMBOLS: <ls_meta> LIKE LINE OF rt_meta.
APPEND INITIAL LINE TO rt_meta ASSIGNING <ls_meta>. <ls_meta>-summary = '获取工厂信息'. <ls_meta>-url-regex = '/IF001/'. <ls_meta>-method = zcl_swag=>c_method-post. <ls_meta>-handler = 'GET_PLANT'.
APPEND INITIAL LINE TO rt_meta ASSIGNING <ls_meta>. <ls_meta>-summary = '获取公司信息'. <ls_meta>-url-regex = '/IF002/'. <ls_meta>-method = zcl_swag=>c_method-post. <ls_meta>-handler = 'GET_BUKRS'. ENDMETHOD.IF001 接口由 GET_PLANT 方法处理, IF002 接口由 GET_BUKRS 方法处理。
GET_PLANT 方 法如下
METHOD get_plant. SELECT werks,name1 INTO TABLE @DATA(lt_werks) FROM t001w. rv_response-response = /ui2/cl_json=>serialize( data = lt_werks compress = abap_false pretty_name = abap_true ). rv_response-msgty = 'S'. rv_response-msg = 'Success'. ENDMETHOD.GET_BUKRS 方法如下
METHOD get_bukrs. SELECT bukrs,butxt INTO TABLE @DATA(lt_bukrs) FROM t001. rv_response-response = /ui2/cl_json=>serialize( data = lt_bukrs compress = abap_false pretty_name = abap_true ). rv_response-msgty = 'S'. rv_response-msg = 'Success'. ENDMETHOD.GET_PLANT 和 GET_BUKRS 方法的出入参是一样的,如下
4\. 创建SICF服务并激活
至此配置完毕
效果展示
1\. SWAGGER UI 界面
在这里可以测试各个接口,并获取返回结果
总结
**GITHUB仓库地址** :https://github.com/a87b01c14/ZSWAGGER.git
欢迎下载、STAR,有宝贵意见的请留言 :)