请教大家 Egg.js 官方的 RESTful 接口有两个路由方法的作用
新手初入 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不提供页面展示功能。