https://github.com/zt8989/sisyphus-cli
一个从 swagger 自动生成 ts 代码的工具
npm install sisyhpus-cli -g
xxx-api
sisyhpus init xxx-api
初始化xxx-api
sisyhpus.json
文件 file 路径是否执行对应 swagger 的地址sisyhpus
更新代码npm run build
打包npm publish
发布sisyhpus-cli
会根据 swagger.json 生成类似代码
class Api {
constructor(request){
this.request = request
}
function getDetail(pathParams, queryParams, bodyParams){
return this.request({
url: bindUrl('/detail', pathParams),
method: 'GET',
params: queryParams,
data: bodyParams
})
}
}
import Api from 'xxx-api';
由于生成的代码是按照 axios 的格式组织参数,所以针对不同的请求库,要做一层封装。
以fetch
为例
function adapter(requestInstance) {
/**
*
* @param {AjaxOptions} options
*/
return options => {
const baseUrl = '/api';
let { url } = options;
const { params, data, ...restParams } = options;
url = baseUrl + url;
if (params) {
url = `${url}?${stringify(params)}`;
}
return requestInstance(url, { ...restParams, body: data });
};
}
const api = new Api(adapter(request));
api.login({ useraname: xxx, password: xxx }).then(res => {})
Q: 我遇到了中文的 model 怎么办?
A: 修改 java 中的注解,
@ApiModel("xxx")
=>@ApiModel(description = "xxx")