我是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);
这里最好的做法是什么?任何帮助深表感谢。 乙
答案 0 :(得分:3)
在松散的REST定义中,我们似乎已经在web-land中融合,第一种选择似乎最合适。
修改,是的,您应该在PUT
和DELETE
路线中指定ID。
HTTP是一种非常酷的协议,用于将动词(请求方法)应用于名词(URL)。本着这种精神,最好使用请求方法来区分您要执行的操作与您请求的资源。
注意:如果您担心浏览器无法使用任意HTTP方法,则可以使用Express中的methodOverride中间件。
methodOverride中间件的工作方式是使用<input type="hidden" name="_method" value="PUT">
或类似方法来指定方法,尽管它只是一个常规POST
请求,而methodOverride中间件将设置{您在快递申请中获得的请求的{1}}属性。这样,您可以发出预期的请求方法的信号,而客户端实际上不必支持该方法。