Express.js:这是一个RESTful接口吗?

时间:2013-06-26 20:27:25

标签: node.js rest express

我是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一致性界面吗?我是否应该在路由中添加相应的操作,例如,并且项目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);

这里最好的做法是什么?任何帮助深表感谢。 乙

1 个答案:

答案 0 :(得分:3)

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

修改,是的,您应该在PUTDELETE路线中指定ID。

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

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

methodOverride中间件的工作方式是使用<input type="hidden" name="_method" value="PUT">或类似方法来指定方法,尽管它只是一个常规POST请求,而methodOverride中间件将设置{您在快递申请中获得的请求的{1}}属性。这样,您可以发出预期的请求方法的信号,而客户端实际上不必支持该方法。