一、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的格式。

09-25 19:28