【问题标题】:Express.js: Is this a RESTful interface?Express.js:这是一个 RESTful 接口吗?
【发布时间】:2013-06-27 05:19:05
【问题描述】:

我对 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.

【问题讨论】:

    标签: node.js rest express


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 您好 deoxxa,感谢您的回答。据我所见,methodOverride 似乎在 express 中默认设置。下一个问题:如何创建 PUT 请求?我可以将它用作表单元素的<form method="PUT"> 属性吗?
    • 这取决于浏览器 - 我不确定哪些浏览器支持这样的任意 HTTP 方法。 methodOverride 中间件的工作方式是您使用<input type="hidden" name="_method" value="PUT"> 或类似的方法来指定方法,尽管它只是一个常规的POST 请求,并且methodOverride 中间件将在您进入的请求上设置method 属性您的快速申请。
    • 这个详细的评论应该是对你原来答案的修正吧! +1否则,很好的答案。会再读一遍!一个++
    猜你喜欢
    • 2013-09-16
    • 1970-01-01
    • 2015-01-04
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多