REST API服务器困境

时间:2015-12-10 17:43:34

标签: node.js api rest meteor

我计划在Meteor上使用NODE.JS上的REST API构建服务器。

这两种编写API的方法有何不同之处:

1。http://meteorpedia.com/read/REST_API
例如:someSrver.com/post /:_ id

  1. someSrver.com/的张贴?ID = _id
  2. 由于

5 个答案:

答案 0 :(得分:0)

我认为至少你正确处理请求并没有什么不同。 我认为第二种风格适合更好,如果你必须传递服务器很多参数,例如提供高分辨率图像的服务,你可以指定瓷砖大小,坐标和其他类似的东西。 如果使用api作为数据库的接口,通常会使用第一种样式。

我使用此库开发了一个休息界面:https://atmospherejs.com/nimble/restivus,它非常易于使用,并且它使用第一种风格。

答案 1 :(得分:0)

因此,如果您想真正了解原因,请阅读REST原则和API设计。

但一般来说,经验法则是URL应代表资源。路径通常代表给定的东西"并且查询字符串代表某种过滤器" thing"。

所以如果你"发布"对象在逻辑上是它自己的实体(例如博客文章),然后它有自己独特的URL,这样GET到www.example.com/posts/:id就会返回你特定的一个博客条目谈论。

GET / posts会映射到所有帖子的列表,例如,GET / posts?tagged = cheetahs会为您提供已过滤的所有帖子的列表,以便返回标记为' cheetahs&#39的帖子;分配给他们。

这都是经验法则和标准。实施确实无关紧要,大多数服务器都不关心;但遵循标准是有价值的,因为它们往往更易于维护,优雅,并且无需做出百万设计决策。如果您希望其他人与您整合,那么他们也可以更轻松地了解您的期望。

答案 2 :(得分:0)

根据URI标准,查询用于非分层过滤器,而路径用于分层过滤器。

如果我们讨论过滤集合,我会使用查询,因此结果将是集合的表示,例如json []。另一方面,如果我们正在谈论一个项目,那么我将使用路径,而json将是一个对象/项目{}。但这只是我自己的风格,你可以使用你喜欢的风格。 (如果您将REST与HATEOAS一起使用,则URI结构仅具有路由目的。我假设您没有。)

答案 3 :(得分:0)

在REST中,URL / URI是项目或项目集合的地址。因此,要获得客户2的所有地址,您可以这样做:

/api/customer/2/addresses

如果你只想要那些带有邮政编码的地址,你可以去:

/api/customer/2/addresses?withPostcode=1

在这种情况下,第一个URL / URI表示事物/事物,而第二个URL / URI应用了修饰符,限制或过滤器。

因此,someSrver.com/post/:_id意味着获取该ID 所知的帖子(尽管理想情况下会是someSrver.com/posts/:_id - 请注意复数)。而第二个(someSrver.com/post?id=_id)暗示问号左边的所有内容已经已经缩小了你的东西/东西,他们现在需要通过ID 属性进行过滤(在这种情况下)就是这件事。

在许多情况下,这是一个微妙的区别,但我总结为第一个应用选择器/位置,第二个应用选择器/位置和过滤器。

答案 4 :(得分:0)

虽然我还没有在节点中实现REST API服务器,但我想在设计服务器时与您分享一些重点:

  • 尝试对控制器使用平面路径,嵌套路径会导致混淆。
  • 避免使用自定义HTTP方法,如PUT,HEAD和PATCH,而不是所有类似的防火墙。
  • 使用HTTP 200 OK的应用错误代码,仅对HTTP错误使用HTTP协议错误代码。

查看更多:http://restafar.com/create-new-rest-server/