我计划在Meteor上使用NODE.JS上的REST API构建服务器。
这两种编写API的方法有何不同之处:
1。http://meteorpedia.com/read/REST_API
例如:someSrver.com/post /:_ id
由于
答案 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服务器,但我想在设计服务器时与您分享一些重点: