【问题标题】:Hypermedia API - Is direct requests an anti pattern?超媒体 API - 直接请求是一种反模式吗?
【发布时间】:2017-08-06 15:15:26
【问题描述】:

我正在使用超媒体概念设计一个 API。我看到有一个返回其他 API 链接以进行导航的根路由是一个很好的做法。

例如:我向 http://myapi.com 发出请求,它返回

{
  links: [
    { 'rel': 'profile', href: '/profile' },
    { 'rel': 'orders', href: '/orders' },
    { 'rel': 'order_types', href: '/order_types' },
    ...
  ]
}

但是,这样一来,如果根有 20 个资源,它会非常大。

那么,直接向 order_types 请求,而不是请求 root,然后请求 order_types 是一种反模式吗?

【问题讨论】:

    标签: api hateoas hypermedia


    【解决方案1】:

    这是一个很难回答的问题,因为我首先想到的是:它真的那么大吗?

    例如,现在您的每个链接大约需要 40 个字节。对于 20 个资源,即 800 字节。 gzip 响应(或 brotli,如果你能支持它),你可以把它做得更小。如果您的总文件有一些开销(比如另外 200 字节)并且我们假设为 1KB,那么使用 gzip 之类的文件您可能可以将其降低到 400 字节或更小。

    您可以在此文件上设置缓存标头,这样它只会被请求一次。

    那么现在你的主要问题是什么?是不是反模式。我会说是的,你应该只有一个书签网址。

    【讨论】:

      【解决方案2】:

      由于我目前在大规模 HATEOAS 风格的 REST API 下遭受了很多痛苦,从我的角度来看,请帮自己一个忙,并将所有链接(方法)放在起始页上。

      您真的不想通过几个链接来找到您想要使用(或测试)的方法。当然,您可以使用直接路径,但又是 RPC 样式。

      我很遗憾地说,HATEOAS 的整个概念虽然听起来不错恕我直言,但在实施和测试方面确实很痛苦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 2022-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多