一、简介

wno_interface 是一款微型的接口配置管理工具,旨在应对实际项目中日益增长的接口调试、开发与后期维护工作,这些工作负担随着项目的不断迭代而逐渐加重。接口的开发、调试、上线及下线,共同构成了一个接口的完整生命周期。若在项目中集成接口,则需频繁地修改代码并进行升级,这无疑带来了较大的风险。本工具正是为解决这一棘手问题而设计的。它实现了接口的开发调测、上线、下线灵活性,使得接口的控制能够随时进行变更并即时生效,从而有效节省了接口调试与升级所需的时间。

1.1 技术栈

框架技术版本
核心框架Spring Boot2.5.6
持久层框架jdbctemplate5.3.12
数据库连接池Alibaba Druid1.1.10
模板解析Groovy3.0.9
json解析fastjson22.0.12
Xquery解析Saxon-HE11.3
sshjsch0.1.55

1.2 部署手册

1.2.1 数据初始化

目前平台支持MySql\Oracle\PostgreSQL\teldb版本,只需要修改数据源配置亦可。具体脚本见: resources/sql目录下脚本。 数据库导入完成后,需要修改数据源地址,wno704.quartzDB属性信息;为了防止对数据库污染,表前缀可以根据自己情况变动,需要配置wno704.tablePrefix,同时修改导入脚本中表前缀,目前默认为INTF_;日志目录需要配置wno704.logDir。

1.2.2 编译构件

传统的springboot项目,目前生成物为jar包,如需要war,请参考 《Spring-Boot项目创建》

1.2.3 服务部署

发布到服务器后,执行java -jar jar包名称,快捷部署可以参考 《Linux下部署Spring-Boot-jar》

二、接口配置

2.1 DS基础配置说明

字段说明
SOURCE_ID数据源id
TYPE类型,目前支持MySQL Oracle PostgreSQL类型
JDBCTEMPLATE_NAMEjdbc名称
DRIVER_CLASS_NAMEjdbc驱动class
URL数据库链接字符串
USERNAME数据库帐号
PASSWORD数据库密码
DB_DESC数据源描述
STATUS可用状态 0使用 1下线
CONFIG其他配置,多个配置换行,属性名称和值用:隔开
CREATE_TIME创建时间
READ_TIME读取时间

注意:如果修改了数据库等配置,需要修改CREATE_TIME为当前时间,定时器读取了后,会自动更新READ_TIME字段。

2.2 接口配置参数

字段说明
INTF_ID接口id
METHOD方法,目前支持所有类型请求,例如POST\GET\PUT\DELETE\PATCH等
URL路径,如果为匹配路径情况,变动位置用%替代
SCRIPT脚本
REMARK备注
STATUS可用状态 0使用 1下线
IS_LOG是否保存日志 0保存 1不保存
CREATE_TIME创建时间
READ_TIME读取时间

注意:如果修改了数据库等配置,需要修改CREATE_TIME为当前时间,定时器读取了后,会自动更新READ_TIME字段。

2.3 脚本配置说明

参考脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import com.alibaba.fastjson2.JSONObject

Map<String, String> reqHeaders = (Map<String, String>)$reqHeaders
String reqParam = (String)$reqParam
String method = (String)$method
String uri = (String)$uri
String msgId = (String)$msgId
String ipAddr = (String)$ipAddr
HttpServletRequest httpServletRequest = (HttpServletRequest)$httpServletRequest
HttpServletResponse httpServletResponse = (HttpServletResponse)$httpServletResponse
Map<String, String> queryParams = (Map<String, String>)$queryParams

String qp = JSONObject.toJSONString(queryParams)

String repMsg = '''{"msg": "请求成功","code": 200,"msgId": "'''+msgId+'''","reqParam":'''+reqParam+''',"queryParams":'''+qp+''',"ipAddr":"'''+ipAddr+'''"}'''


Map<String, Object> repHeaders = new HashMap<>()
repHeaders.put("Content-Type","application/json; charset=utf-8")

Map<String, Object> res = new HashMap<>()
res.put("repHeaders",repHeaders)
res.put("repMsg",repMsg)
res.put("repStatus",200)

return res

目前脚本默认传了9个参数,返回需要携带3个参数。具体参数说明如下:

类型参数类型标签说明
输入reqHeadersMap<String, String>$reqHeaders接口请求头的所有信息
输入reqParamString$reqParam接口请求报文
输入methodString$method接口请求方法
输入uriString$uri接口请求路径
输入msgIdString$msgId系统自动生成的消息id,如果保存调用记录,这个就是记录表主键
输入ipAddrString$ipAddr接口请求原始IP
输入httpServletRequestHttpServletRequest$httpServletRequest请求对象
输入httpServletResponseHttpServletResponse$httpServletResponse响应对象
输入queryParamsMap<String, String>$queryParams接口请求查询参数
输出repHeadersMap<String, String>repHeaders接口响应头信息
输出repMsgStringrepMsg接口响应报文
输出repStatusIntegerrepStatus接口响应状态

注意: 引入工具类参考 https://wno704.cn/wno_util/

2.4 接口记录说明

字段说明对应脚本字段
LOG_ID主键$msgId
INTF_ID接口id
METHOD方法$method
URL路径$uri
REMARK备注
REQUEST_IPADDR请求IP$ipAddr
REQUEST_HEADERS请求头信息$reqHeaders
REQUEST_PARAM请求参数$queryParams
REQUEST_MSG请求报文$reqParam
REQUEST_TIME请求时间
RESPONSE_HEADERS响应头信息repHeaders
RESPONSE_STATUS响应状态repStatus
RESPONSE_MSG响应头报文repMsg
RESPONSE_TIME响应时间