CherryRest
一种非常优雅Rest接口调用方式
Features
- 基于Restful风格接口设计的模块化接口url生成器
- 集中管理接口url
- 默认使用fetch作为接口加载器
- 可以给模块单独设置baseUrl
- 支持response formatter配置、支持单个module formatter
- 内置默认filter,当前只有一个over,重载response data filed
Install
npm install cherry-rest --save
Usage
import Cherry,{module as CherryModule,config as CherryConfig} from 'cherry-rest'
基于业务Rest接口定义模块
CherryModule('name');
CherryModule('module2|home,moudle3|user');
CherryModule([{
name:'module3',
alias:'about',
children:[{
name:'info',
},{
name:'concat'
}]
}]);
调用
Cherry.module3.info.query({query:{id:1}}).then(res=>res)
Cherry.module3.info.create({body:{name:1}}).then(res=>res)
Cherry.module3.info.update({query:{id:1}}).then(res=>res)
Cherry.module3.info.remove({path:'1,2'}).then(res=>res)
Demo
import Cherry,{module as CherryModule,config as CherryConfig} from '../dist/index.js'
jest.setTimeout(1200000);
CherryConfig({
credentials:'include'
},{
baseUrl:'http://ip.taobao.com',
formatter:function(res){
return res.json()
}
})
CherryModule('ip|service',{
formatter:[function(data){
return data.data;
}],
filters:[{
name:'over',
options:['city_id|id']
}]
});
it('async & filters test', () => {
expect.assertions(1);
return Cherry.ip.query({path:'getIpInfo.php',query:{ip:'114.114.114.114'}}).then(data => {
expect(JSON.stringify(data)).toEqual(JSON.stringify({"id":"320100"}))
});
});