1

我对 node 和 express.js 很陌生,而且我对 REST 应用程序的概念也很陌生。我想编写一个典型的 CRUD 应用程序,某种日记。因此,我有一组条目,可以查看单个条目并可以添加、编辑和删除条目。我还没有完全了解如何设置 URi 来表示符合 REST 的 API。我会在我的 app.js 中创建类似的东西:

// GET REQUEST ROUTING
app.get('/', diary_router.home);
app.get('/entries/', diary_router.listEntries);
app.get('/entries/:id', diary_router.getSingleEntry);

// POST REQUEST ROUTING
app.post('/entries/', diary_router.addEntry);

// PUT REQUEST ROUTING
app.put('/entries/', diary_router.updateEntry);

// DELETE REQUEST ROUTING
app.delete('/entries/', diary_router.deleteEntry);

那可以称为 REST 一致性接口吗?我是否应该在路由中添加相应的操作,例如这个,并且 item-ID 是否也需要在 PUT 和 DELETE 操作的 URL 中显示?:

// GET REQUEST ROUTING
app.get('/', diary_router.home);
app.get('/entries/', diary_router.listEntries);
app.get('/entries/show/:id', diary_router.getSingleEntry);

// POST REQUEST ROUTING
app.post('/entries/add/', diary_router.addEntry);

// PUT REQUEST ROUTING
app.put('/entries/update/:id', diary_router.updateEntry);

// DELETE REQUEST ROUTING
app.delete('/entries/delete/:id', diary_router.deleteEntry);

这里的最佳做法是什么?任何帮助深表感谢。B.

4

1 回答 1

3

在我们似乎已经在网络领域融合的 REST 的松散定义中,第一个选项似乎最适合。

编辑:PUT是的,您应该在andDELETE路由中指定 ID 。

HTTP 是一个非常酷的协议,用于将动词(请求方法)应用于名词(URL)。本着这种精神,最好使用 request 方法来区分您想要对所请求的资源执行的操作。

注意:如果您担心浏览器无法使用任意 HTTP 方法,可以在 express中使用methodOverride中间件。

methodOverride 中间件的工作方式是您使用一个<input type="hidden" name="_method" value="PUT">或类似的方法来指定方法,尽管它只是一个常规POST请求,并且 methodOverride 中间件将method根据您在快速应用程序中获得的请求设置属性。这样,您可以发出预期的请求方法,而无需客户端实际支持该方法。

于 2013-06-26T20:56:58.907 回答