首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RESTfull实现与通用信息

RESTfull实现与通用信息
EN

Stack Overflow用户
提问于 2013-11-07 08:28:07
回答 1查看 94关注 0票数 3

我最近读了很多书,甚至更多地尝试了网络开发。有些事情我根本无法理解,因此任何帮助都是值得感激的。

我不想为我做作业。我的知识有一些漏洞,我想填补。请帮我提一下你的看法:)

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

示例一(get):

代码语言:javascript
运行
复制
app.get('/', function(req, res) {
    res.send('please select a collection, e.g., /collections/messages')
})

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

示例2 (get):

代码语言:javascript
运行
复制
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 (位于params.id中)获取id并根据其进行搜索(即MongoDB)。

示例三(post):

代码语言:javascript
运行
复制
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搞糊涂了。我知道这篇文章是用rew.body传送的.params.id是什么?它是否包含URL变量,例如:ID?
  3. 我的解释。他们是对的吗?
  4. 例三也是REST,而不考虑使用POST的事实?
  5. 示例三,'/collections/:collectionName。为什么':collectionName‘是在URL中传递的,我可以将它作为参数(以及新的数据)放在req.body中,并从中获取它?这样做有什么好处呢?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-10 21:48:04

  1. API必须使用HATEOAS才能成为RESTful。在第一个例子中,如果/是API的入口点,那么响应应该包含可用集合的链接,而不是像这样的人类可读的字符串。那绝对不是RESTful。
  2. 一点儿没错。
  3. 它们是可以的,只是在第三个例子中没有任何东西暗示它是一个JSON体。它应该检查客户端发送的Content-Type头。
  4. REST不依赖HTTP。只要您按照标准使用HTTP方法,就可以了。POST是用于任何未标准化的操作的方法,因此,如果没有特定于此的方法,则可以将POST用于任何操作。例如,使用POST进行检索是不正确的,但如果没有完整的表示形式,则可以使用POST创建新资源。
  5. POST意味着数据体从属于目标URI上的资源。如果collectionName在POST中,这将意味着您是POSTing to /collections,这将更有意义地创建一个新集合,而不是一个集合的新项。
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19831061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档