1-2 egg框架 资源路由

1.RESTful 风格的 URL 定义

如果想通过 RESTful 的方式来定义路由, egg提供了 app.router.resources(‘routerName’, ‘pathMatch’, controller) 快速在一个路径上生成 CRUD 路由结构。

module.exports = app => {
  const { router, controller } = app;
  router.resources('posts', '/api/posts', controller.posts);
  router.resources('users', '/api/v1/users', controller.v1.users); // app/controller/v1/users.js
};

上面代码就在 /posts 路径上部署了一组 CRUD 路径结构,对应的 Controller 为 app/controller/posts.js 接下来, 你只需要在 posts.js 里面实现对应的函数就可以了。

2.router.resources支持的方法

MethodPathRoute NameController.Action
GET/postspostsapp.controllers.posts.index
GET/posts/newnew_postapp.controllers.posts.new
GET/posts/:idpostapp.controllers.posts.show
GET/posts/:id/editedit_postapp.controllers.posts.edit
POST/postspostsapp.controllers.posts.create
PUT/posts/:idpostapp.controllers.posts.update
DELETE/posts/:idpostapp.controllers.posts.destroy

posts.js
resources只支持7中方法,他们分别是 index,new,show,edit,create,update,destroy ,除这其中方法以外,其它的自定义方法都无法访问

/* 
 *@name 资源路由
 */
'use strict';

const Controller = require('egg').Controller;

class PostController extends Controller {
	async index(ctx) {
		ctx.body = '列表';

	}
	
	async new(ctx) {
		ctx.body = 'new';
	}

	async create(ctx) {
		ctx.body = '新建';
	}

	async show(ctx) {
		ctx.body = '显示';
	}

	async update(ctx) {
		ctx.body = 'update';
	}

	async destroy(ctx) {
		ctx.body = 'destroy';
	}
}

module.exports = PostController;

【详解】
上面表格中每一列都是有含义的
method: 请求该方法的方式,如index方法只能通过GET方式进行访问
Path:请求路径 如请求 http://localhost:7001/post路径,返回的就是 posts.js文件中的 index方法
Route Name:路由的名称
Controller.Action:请求路径所绑定的方法(请求 http://localhost:7001/post 返回的是 app.controllers.posts.index,请求 http://localhost:7001/new返回的是 app.controllers.posts.new)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾里桃花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值