API路由清单
EggBornJS自动将模块的API路由
清单合并到底层EggJS统一的清单中
src/suite-vendor/test-party/modules/test-party/backend/src/routes.js
- 1module.exports = app => {
- 2 const routes = [
- 3 {
- 4 method: 'post',
- 5 path: 'kitchen-sink/guide/echo9',
- 6 controller: 'testKitchensinkGuide',
- 7 action: 'echo9',
- 8 middlewares: 'test,transaction',
- 9 meta: {
- 10 right: { type: 'resource', name: 'appComponentsGuide' },
- 11 },
- 12 },
- 13 ];
- 14 return routes;
- 15};
名称 | 说明 |
---|---|
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 |
本模块内部调用
- 1const body = {};
- 2this.$api.post('kitchen-sink/guide/echo9', body).then(data => {
- 3 console.log(data);
- 4}).catch(err => {
- 5 console.log(err);
- 6});
跨模块调用
- 1const body = {};
- 2this.$api.post('/test/party/kitchen-sink/guide/echo9', body).then(data => {
- 3 console.log(data);
- 4}).catch(err => {
- 5 console.log(err);
- 6});
后端访问API路由
不仅前端可以访问API路由
,后端也可以访问API路由
后端访问API路由
也支持两个场景:本模块内部调用
、跨模块调用
这里,以跨模块调用
为例:
- 1const body = {};
- 2const data = await this.ctx.performAction({
- 3 method: 'post',
- 4 url: '/test/party/kitchen-sink/guide/echo9',
- 5 body,
- 6});
ctx.performAction
在后端调用API路由
名称 | 说明 |
---|---|
method | get/post等方法 |
url | API路由路径 |
body | post方法的传入参数 |
评论: