gpt4 book ai didi

RESTful 实现和一般信息

转载 作者:行者123 更新时间:2023-12-02 01:56:16 26 4
gpt4 key购买 nike

我最近读了很多书,甚至更多地尝试了网络开发。有些事情我根本无法理解,因此非常感谢您的帮助。

我不是要替我完成作业。我的知识有一些漏洞,我想填补。请帮助我提出您的意见:)

REST 问题:阅读文档这是完全可以理解的(NODE.JS/Express)示例:

示例一(获取):

app.get('/', function(req, res) {
res.send('please select a collection, e.g., /collections/messages')
})

我的解释:当服务器的根被命中时,发送以下消息

示例二(获取):

app.get('/collections/:collectionName/:id', function(req, res) {
req.collection.findOne({name: req.collection.id(req.params.id)},
function(e, result){
if (e) return next(e)
res.send(result)
})
})

我的解释:当 url 命中时,从 URL 中获取 id(位于 params.id 中)并根据它进行搜索(即 MongoDB)。

示例三(发布):

app.post('/collections/:collectionName', function(req, res) {
req.collection.insert(req.body, {}, function(e, results){
if (e) return next(e)
res.send(results)
})
})

我的解释:当 URL 被命中时,获取位于 req.body 中的有效负载(在本例中为 JSON),并将其作为新文档插入。

问题:

  1. 示例一和示例二都是 RESTfull 吗?

  2. 我现在对 params.id 完全感到困惑。我明白 POST 是在 rew.body 中传输的……什么是 params.id?它是否包含 URL 变量,例如:ID?

  3. 我的解释……是否正确?

  4. 例子三也是REST,不管用的是POST吗?

  5. 示例三,'/collections/:collectionName.为什么 ':collectionName' 在 URL 中传递,我可以将它作为参数(连同新数据)放在 req.body 中并从那里获取它?这样做有什么好处?

谢谢

最佳答案

  1. API 必须使用 HATEOAS 才能成为 RESTful。在第一个示例中,如果 / 是您的 API 的入口点,则响应应包含可用集合的链接,而不是像那样的人类可读字符串。这绝对不是 RESTful。

  2. 完全正确。

  3. 它们没问题,只是第三个示例中没有任何内容暗示它是 JSON 正文。它应该检查客户端发送的 Content-Type header 。

  4. REST 不依赖于 HTTP。只要您使用标准化的 HTTP 方法,就可以了。 POST 是用于任何未标准化操作的方法,因此如果没有特定方法,则可以将 POST 用于任何操作。例如,使用 POST 进行检索是不正确的,但如果您没有完整的表示形式,则可以使用它来创建新资源。

  5. POST 表示数据主体从属于目标 URI 的资源。如果 collectionName 在 POST 正文中,这意味着您正在 POST 到 /collections,这对于创建新集合而不是集合的新项目更有意义.

关于RESTful 实现和一般信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com