使用的yapi作为接口文档平台。出于业务需求需要对接口创建、修改、删除等事件进行监听。
yapi已经实现并预留了这个口子,但是没有找到实现的文档。这里进行简单描述下使用的方式。
一、yapi创建、修改接口事件
根据yapi目前的开放实现机制,在plugin.js这个文件中提供了一些事件其中就有创建、修改接口的事件。
在创建接口时,会将接口的详细信息作为参数;当接口编辑更新时,会将编辑的接口的接口ID作为参数。详细说明如下:
1.1 yapi 创建接口事件
/**
* 客户端增加接口成功后触发
* @param data 接口的详细信息
*/
interface_add: {
type: 'multi',
listener: []
},
1.2 yapi更新接口事件
/**
* 客户端更新接口成功后触发
* @param id 接口id
*/
interface_update: {
type: 'multi',
listener: []
},
二、提供接口事件的回调接口
这里使用Springboot提供实现了两个接口,分别是接口创建、接口编辑更新接口。根据自身业务需求当有接口创建、接口更新时进行实现逻辑即可。
public interface YApiCallbackFacade {
/**
* 创建接口
*
* @param data 创建接口参数信息
*/
@PostMapping("/api/yapi-callback/v1/interface/create")
ResultBean<CreateInterfaceVo> createInterface(@RequestParam("data") data);
/**
* yapi更新
*
* @param apiId 更新接口的ID
*/
@GetMapping("/api/yapi-callback/v1/interface/update")
ResultBean<Boolean> updateInterface(@RequestParam("id") String apiId);
}
三、yapi调用回调接口
在触发事件中实现调用回调接口的逻辑。
var hooks = {
/**
* 客户端增加接口成功后触发
* @param data 接口的详细信息
*/
interface_add: {
type: 'multi',
listener: [createInterface]
},
/**
* 客户端更新接口成功后触发
* @param id 接口id
*/
interface_update: {
type: 'multi',
listener: [updateInterface]
}
};
在两个事件的listener中配置实现的方法。详细方法如下:
/**
* 创建接口
* @param data
*/
function createInterface(data) {
console.log(data);
axios.post('https://127.0.0.1/api/yapi-callback/v1/interface/create', {
'data': JSON.stringify(data)
}).then(response => {
console.log(response.data)
});
}
/**
* 更新接口
* @param data
*/
function updateInterface(data){
axios.get('https://127.0.0.1/api/yapi-callback/v1/interface/update?id='+data).then(response=>{
console.log(response.data)
});
}
创建接口时data的部分格式如下
{
edit_uid: 0,
status: 'undone',
type: 'static',
req_body_is_json_schema: false,
res_body_is_json_schema: false,
api_opened: false,
index: 0,
tag: [],
method: 'GET',
catid: 66,
title: '人员信息-test',
path: '/api/person/info',
project_id: 48,
req_params: [],
res_body_type: 'json',
query_path: { path: '/api/person/info', params: [] },
uid: 12,
add_time: 1632543497,
up_time: 1632543497,
req_query: [],
req_headers: [],
req_body_form: [],
_id: 5074,
__v: 0
}
这里是接口创建时data的格式。