这周,百家饭OpenAPI工具继续完善0.5.3版本的开发工作,继续进行Javascript脚本的自动生成研发,经过这周的研发,百家饭的OpenAPIJavascript代码自动生成功能终于开始在自己平台上用起来了,前期4个接口的生成脚本在代码格式、注释内容和基础required鉴权等方面达到了初步的要求。
Javascript生成脚本完成了以下一些功能的优化。
1)当输入参数为空时,不进行默认参数覆盖
原来默认都会生成一个默认参数,以方便用户设置某些入参的默认值,就像这样:
var verify_err = null;
if ( verify_err !=null){
return verify_err;
}
var defaultParam = {
};
当没有配置任何默认参数时,看着就很别扭,自己都看不过去了,这周把这个去掉,如果用户没有配置任何默认参数的话,这个空的defaultParam就不再生成了。
2)支持对于较少数量参数的请求,直接将参数展开,不是传递object的模式,该配置可以通过配置为某一个函数设置特殊模式
0.5.2版本的时候,所有的参数调用都是object格式,比如这样
const injure = (instance)=>{
// 路径:/service/user/login, 调用方法POST
// 用户登录/注册-登录函数
//inputs要求传输以下属性,没有标注'有默认值'的参数由调用方传输
//-Mobile:
//-Password:
instance.postServiceUserLogin = (input) => {
那如果要登录的话,需要传入的参数是:
instance.postServiceUserLogin({
Mobile: "xxxxx",
Password: "xxxx"
}
有时候一些简单的调用,这么传输就比较费劲,对于少量入参的函数,就直接把参数扩展出来就好了,变成类似这样:
const injure = (instance)=>{
// 路径:/system/wx, 调用方法GET
// 进行微信链接-将页面url注册到微信,以便进行分享
//params要求传输以下属性,没有标注'有默认值'的参数由调用方传输
//-Url:注册的url
instance.getSystemWx = (Url) => {
3)支持commonjs和es6两种引用模式。
支持require和import两种模式,模式可以通过附加-Dcommonjs=true(或者false)进行配置。
4)去除对于不需要的类库的引用
百家饭OpenAPI支持公式参数,一些费劲的API各种sign什么的,可以公式直接生成,js代码使用的话就会引用外部依赖库,比如md5,dayjs之类,但是这些对于普通使用者,如果没用到就也要引用的话就显得很麻烦,这一版会根据用户使用情况再决定是否生成对应的函数和引用,普通使用的话,就不会有很多依赖的情况了。
5)默认不再设置baseUrl的host
一般OpenAPI文档都是带域名的,比如这样:
baseURL: 'https://rongapi.cn/ '
主要是因为OpenAPI所规定的API是公开使用的,不限于前后台交流,但是Javascript一般调用的都是本网站的后端接口,这次,针对JS的代码生成,我们就默认去掉baseURL中的host。默认改成这样:
baseUrl: "/"
6) 支持URL参数
很多接口都会用到url参数,比如url中某一段是id,或者像我们一样,是个表示返回类型的字段
const injure = (instance)=>{
// 路径:/api/list.{Type}, 调用方法GET
// 查询所有的公开API列表-查询公开的和自己的API
//params要求传输以下属性,没有标注'有默认值'的参数由调用方传输
//-Limit(有默认值):单次获取个数
//-Self(有默认值):获取自己的
//-Type(有默认值):返回数据的类型,json/xml
instance.getApiList = (Limit = 20 , Self = false , Type = "json") => {
//需要检查参数时,可以在api中标记参数为必填
return instance.get(`/api/list.${Type}`,{
params:{ Limit , Self }
});
}
}
我们用到了java的template string来将传入参数设置到url里面。
完成这些步骤之后,我们自己研发的产品终于自己平台先用上了,希望尽快可以让大家试用百家饭的JS API调用代码自动生成功能,预计是随下周0.5.3版本的客户端软件一并更新,希望能够帮助到大家。