Express.js:这是一个REST风格的界面吗?

我对node和express.js很新,而且我对REST应用程序的概念也很陌生。 我想编写一个典型的CRUD应用程序,某种日记。 因此,我有一个条目集合,可以查看单个条目,并可以添加,编辑和删除条目。 我还没有到现在,如何URi必须build立代表一个REST符合API。 我会在我的app.js中创build这样的东西:

// 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一致性接口吗? 我是否应该在路线中添加相应的动作,比如这个,并且是否需要在PUT和DELETE动作的URL中显示项目ID?

 // 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.

在我们似乎已经在web-land中收敛的REST的松散定义中,第一种select似乎最适合。

编辑:是的,你应该在PUTDELETE路由中指定ID。

对于将名词(请求方法)应用到名词(URL),HTTP是一个非常酷的协议。 本着这种精神,最好使用请求方法来区分你想要做的事情和你请求的资源。

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

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