API路由清单
EggBornJS自动将模块的API路由
清单合并到底层EggJS统一的清单中
src/module-vendor/test-party/backend/src/routes.js
const testKitchensinkGuide = require('./controller/kitchen-sink/guide.js');
module.exports = app => {
const routes = [
{
method: 'post',
path: 'kitchen-sink/guide/echo9',
controller: 'testKitchensinkGuide',
action: 'echo9',
middlewares: 'test,transaction',
meta: {
right: { type: 'resource', name: 'kitchenSink' },
},
},
];
return routes;
};
名称 | 说明 |
---|---|
method | get/post等方法 |
path | 路径,支持EggJS的参数化路径 |
controller | Controller对象 |
action | Controller方法,如果不设置,则自动采用path尾部单词 |
middlewares | 可指定一组中间件,如transaction 是启用数据库事务 |
meta | API路由的元数据,可以指定与中间件相关的参数,如配置全局中间件right 的参数:type和name,从而验证当前用户是否具有访问此API的权限 |
前端访问API路由
前端访问后端API路由
主要有两个场景:本模块内部调用
、跨模块调用
场景 | 格式 | 举例 |
---|---|---|
本模块内部调用 | controller/action |
kitchen-sink/guide/echo9 |
跨模块调用 | /providerId/moduleName/controller/action |
/test/party/kitchen-sink/guide/echo9 |
本模块内部调用
const body = {};
this.$api.post('kitchen-sink/guide/echo9', body).then(data => {
console.log(data);
}).catch(err => {
console.log(err);
});
跨模块调用
const body = {};
this.$api.post('/test/party/kitchen-sink/guide/echo9', body).then(data => {
console.log(data);
}).catch(err => {
console.log(err);
});
后端访问API路由
不仅前端可以访问API路由
,后端也可以访问API路由
后端访问API路由
也支持两个场景:本模块内部调用
、跨模块调用
这里,以跨模块调用
为例:
const body = {};
const data = await this.ctx.performAction({
method: 'post',
url: '/test/party/kitchen-sink/guide/echo9',
body,
});
ctx.performAction
在后端调用API路由
名称 | 说明 |
---|---|
method | get/post等方法 |
url | API路由路径 |
body | post方法的传入参数 |
ctx.performActionInBackground
在后端以后台方式
调用API路由
名称 | 说明 |
---|---|
method | get/post等方法 |
url | API路由路径 |
body | post方法的传入参数 |
评论: