请教大家 Egg.js 官方的 RESTful 接口有两个路由方法的作用
发布于 2 个月前 作者 Andy0570 2042 次浏览 来自 问答

新手初入 Node.js

我在阅读 Egg 的官方文档 Egg.js:RESTful 风格的 URL 定义 这边看到:

只要在 router.js 文件中定义 app.resources('routerName', 'pathMatch', controller) 就会自动在一个路径下自动生成以下的 CRUD 路由结构:

Method Path Router Name Controller.Action Description
GET /posts posts app.controllers.posts.index 获取所有资源
GET /posts/new new_post app.controllers.posts.new
GET /posts/:id post app.controllers.posts.show 获取一个指定资源
GET /posts/:id/edit edit_post app.controllers.posts.edit
POST /posts posts app.controllers.posts.create 新建一个资源
PUT /posts/:id post app.controllers.posts.update 更新一个资源
DELETE /posts/:id post app.controllers.posts.destroy 删除一个资源

大多数路由方法我能看懂,其中,第 2、4 两个路由方法没看懂,请教大家它的作用。 因为它似乎并不符合常规的 RESTful 描述,让我无法理解。

HTTP 方法 路径 response 格式
GET /collection 返回资源对象的列表(数组)
GET /collection/resource 返回单个资源对象
POST /collection 返回新生成的资源对象
PUT /collection/resource 返回完整的资源对象
PATCH /collection/resource 返回完整的资源对象
DELETE /collection/resource 返回一个空文档

当然文档后面也有说:

如果我们不需要其中的某几个方法,可以不用在 posts.js 里面实现,这样对应 URL 路径也不会注册到 Router。

2 回复

见名知意:

GET /posts 文章列表页 GET /posts/new 新建一个文章的编辑页 GET /posts/:id 具体 id 的文章页 GET /posts/:id/edit 具体 id 的文章的编辑页

这两个api路由其实有点歧义。 文档上边也写了「RESTful 风格」,但不严格按照RESTful api方式(RESTful 风格也是作为一种参照,按照实际情况可以自行修改)。 在web应用中,确实需要编辑页面、新建页面功能,则需要相应路由。 通常api应用中,是不会出现这两个路由的,因为api不提供页面展示功能。

回到顶部