一、简介

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.intfDB属性信息,其他数据源可以根据实际裁剪,具体修改见 2.1 数据源配置说明。

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接口响应状态

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响应时间