HATEOAS和客户端实现

时间:2015-02-19 21:18:29

标签: api rest architecture hateoas

我已经阅读了一些关于HATEOAS的文章以及应该实现API的方式,以便您可以通过链接遍历到不同的状态。但我对如何实施客户端感到困惑?

从此answer

  

客户端对服务器如何设计其他URI没有任何了解   而不是它在运行时能找到的东西。

  • 如果客户端不知道直接URI,客户端是否需要从根节点爬行到嵌套资源才能进行POST?
  • 那么API文档的目的是什么?

3 个答案:

答案 0 :(得分:2)

为了实现HATEOAS,服务器需要包含从服务器到客户端的响应的链接,客户端使用这些链接来响应与服务器的通信。

例如。客户端请求产品列表,服务器将响应产品列表,其中包含添加,编辑和删除产品的链接(如果用户能够这样做),然后在客户端中将其转换为链接或按钮,如编辑产品,删除产品。

blog可能会帮助您获得更多理解。

答案 1 :(得分:1)

  

如果客户端不知道直接URI,客户端是否需要从根节点爬行到嵌套资源才能进行POST?

是,除非根页面不包含描述POST的链接。

  

那么API文档的目的是什么?

它描述了客户端可以通过链接或属性识别的元数据。所以它描述了服务的功能。

答案 2 :(得分:1)

回答您的第一个问题"如果客户端不知道直接URI,客户端是否需要从根节点爬行到嵌套资源才能进行POST?"

答案是否定的。客户端始终不必从根节点进行爬网。可以设计URI;使得到达直接URI的导航可以来自其他视图。例如,如果URI(/ Products / product1 / Delete)的目的是删除产品,那么应该可以通过从/ Products中爬行或通过提供Products / Deleteview的命名空间查询来实现此目的。这个" DeleteView" URI应该提供删除视图的所有URI。即它可以返回uri集合,如Products / product1 / Delete,Products / product2 / Delete等。

到第二个问题"那么API文档的目的是什么?" API的概念是过去的遗产。理想情况下,URI本身应该是文档。通过这种方式,客户端可以被编程为仅发现并采取它可以响应的事物。

我们掌握了管理这些名称空间的独特技术。所以我们自己不受这种观点操纵。我建议使用一种技术来操作和创建这些URI命名空间。