【问题标题】:HATEOAS and client implementationHATEOAS 和客户端实现
【发布时间】:2015-03-03 09:38:11
【问题描述】:

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

来自answer

客户端不知道服务器如何设计它的 URIs 比它在运行时可以找到的。

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

【问题讨论】:

    标签: api rest architecture hateoas


    【解决方案1】:

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

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

    这个blog 可能会帮助你获得更多的理解。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        答案是否定的。客户端总是不必从根节点爬取。可以将 URI 设计为可以从其他视图导航到直接 URI。例如,如果 URI (/Products/product1/Delete) 的目的是删除 product ,那么应该可以通过从 /Products 爬取或通过提供 Products/Deleteview 的命名空间查询来达到此目的。这个“DeleteView”URI 应该给出删除视图的所有 URI。即它可以返回一个 uri 集合,如 Products/product1/Delete、Products/product2/Delete 等。

        对于您的第二个问题“那么 API 文档的目的是什么?” API 的概念是过去的遗产。理想情况下,URI 本身应该是文档。通过这种方式,客户端可以被编程为只发现和获取它可以响应的东西。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 2013-04-14
          • 1970-01-01
          • 2016-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多