REST全面实施和一般信息

REST全面实施和一般信息,rest,restful-architecture,Rest,Restful Architecture,最近我读了很多书,甚至更多的是关于web开发的实验。有些事情我简直无法理解,因此非常感谢您的帮助 我不想让我的家庭作业为我完成。我的知识中有一些漏洞,我想填补。请帮我说说你的观点:) 其余问题: 阅读文档这是完全可以理解的(NODE.JS/Express)示例: 示例一(get): 我的解释是:当服务器的根被点击时,发送以下消息 示例二(get): 我的解释是:当url命中时,从url(位于params.id中)获取id并基于它进行搜索(即MongoDB) 例三(员额): 我的解释是:点击URL

最近我读了很多书,甚至更多的是关于web开发的实验。有些事情我简直无法理解,因此非常感谢您的帮助

我不想让我的家庭作业为我完成。我的知识中有一些漏洞,我想填补。请帮我说说你的观点:)

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

示例一(get):

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

示例二(get):

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

例三(员额):

我的解释是:点击URL时,获取req.body中的有效负载(本例中为JSON),并将其作为新文档插入

问题:

  • 示例1和示例2都是RESTfull吗

  • 我现在完全被params.id搞糊涂了。我知道这篇文章是用文字转载的。。。什么是params.id?它是否包含URL变量,例如:ID

  • 我的解释。。。他们说得对吗

  • 例三也是REST,不管使用POST的事实如何

  • 示例三,'/collections/:collectionName。为什么在URL中传递“:collectionName”,我可以将它作为参数(以及新数据)放在req.body中,然后从那里获取它?这样做的好处是什么

  • 多谢各位

  • API必须使用HATEOAS才能实现RESTful。在第一个示例中,如果
    /
    是API的入口点,那么响应应该包含可用集合的链接,而不是像这样的人类可读字符串。那绝对不舒服

  • 没错

  • 它们没有问题,只是第三个示例中没有任何东西暗示它是JSON主体。它应该检查客户端发送的
    内容类型

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

  • POST表示数据体从属于目标URI处的资源。如果帖子正文中有
    collectionName
    ,这意味着您正在发布到
    /collections
    ,这将更有意义创建一个新的收藏,而不是一个收藏的新项目

  • 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)
        })
    })
    
    app.post('/collections/:collectionName', function(req, res) {
        req.collection.insert(req.body, {}, function(e, results){
            if (e) return next(e)
            res.send(results)
        })
    })