2016-03-02 71 views
0

是否有人可以帮助解释设计一个RESTful API URL“正确”的方式的好处:什么是REST风格的URL嵌套节点的好处

/api/companies/1/buildings/4/rooms/420

主场迎战“不正确”的方式:

/api/rooms/420

好处我看到:

  • 更容易阅读的句子
  • 容易推断出“低级别”的资源可用(IMO最好的理由)

Q1难道我们假设房间#420不应该在任何其他存在建造?我可以争辩说这是数据库指针,所以也许这就是我困惑的地方。

另一件事是,你不应该比窝深的几个节点的更多:

/api/companies/1/buildings/4/rooms/420/desks/5/legs/3

Q2:在什么时候,你打破了这些资源?或者这是否暗示如果这种情况发生,API设计需要重新思考?

Q3:在设计前端的网址,是然后 OK使其只.com/rooms/420

谢谢:)

+0

REST对于什么URL应该看起来没有任何说法。你的两个例子都不是RESTful。 –

回答

1

URIs不打算被读作“句子”。您应该考虑URI是不透明的 - 它们不需要传递分层信息。 RESTful API使用资源之间的链接导航到其他信息。使用RESTful API的程序员使用文档来辨别资源类型之间的关系。

API客户端不知道或关心你的id是什么。也许这是一个数据库ID,也许不是。他们只知道URI api/rooms/420是识别特定资源的唯一方法。

Q1。 ? 420号房间存在于任何地方。在room资源上粘贴building链接。客户可以按照该链接查看房间的建筑物。

Q2。 打破它们,客户会让我一样。 :-)给这个URI,客户如何搜索所有拥有两个以上窗口的房间,而不考虑建筑物?或者所有被标记为要扔掉的桌子,无论建筑物是什么?平面API给你比深度嵌套更灵活。

Q3。这从来都不是。然而,你决定设计它。我不清楚你的意思是“前端网址”。