【问题标题】:Way to specify resource's fields list in RESTful API request在 RESTful API 请求中指定资源字段列表的方法
【发布时间】:2013-08-14 15:12:59
【问题描述】:

我在 Web 服务中有一个 RESTful API,其中包含用户、帖子等资源。当我请求帖子列表(GET /posts)时,我想检索一个帖子数组,每个帖子的数据有限(即主题、作者姓名)。当我请求具体帖子 (GET /posts/42) 时,我想检索帖子对象字段的完整列表,包括大帖子正文、有关喜欢计数的附加信息、cmets 计数。 我想有很多方法可以解决这个问题。
在我看来,最明显的三个是:

  1. 在每个请求上明确指定一个字段列表 (/posts?fields=subject,author_name/posts/42?fields=subject,body,createAt,author_name,comments_count,likes_count,等等...)。
  2. 仅当字段列表不同于默认字段列表时,才显式指定字段列表。
  3. 指定应从 (to) 中排除(或包含)的字段列表 如果所需的字段集与默认值不同,则设置默认字段。

我想为我的客户构建一个清晰有用的 API。我应该选择哪种方式?

【问题讨论】:

    标签: rest


    【解决方案1】:

    我会选择选项 2 恕我直言。

    因此,如果消费者只是请求资源 url (/posts/42),他们会收到默认字段。

    然后消费者可以通过在查询字符串中定义值来更改默认响应,例如:

    /posts/42/fields?subject,author_name

    这在过去对我来说效果很好,并且是其他一些众所周知的 API 的工作方式,例如Facebook

    编辑:回顾一下,我会将请求更改为:

    /posts/42?fields=subject,author_name

    /post/42 是资源,而不是字段。

    【讨论】:

    • 我同意。它提供了较低的进入门槛,因此开发人员可以探索并轻松查看默认字段,但仍然可以根据需要灵活地询问您想要的内容。
    • 我也执行选项 (2),但我允许 fields=* 获取所有字段,以便轻松查询完整集(尤其是对于想要了解或仔细检查的开发人员)设置是)。
    【解决方案2】:

    也一直在对此进行研究,并指出 Facebook 的 GraphQL 作为请求具有所需字段的宁静 api 的替代方案。它仍处于早期阶段,但看起来很有希望。

    https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html

    编辑: 转载自网址:

    GraphQL 查询是由服务器解释的字符串,它以指定格式返回数据。这是一个示例查询:

    {
      user(id: 3500401) {
        id,
        name,
        isViewerFriend,
        profilePicture(size: 50)  {
          uri,
          width,
          height
        }
      }
    }
    

    (注意:此语法与之前的 GraphQL 示例略有不同。我们最近一直在对语言进行改进。)

    这是对该查询的响应。

    {
      "user" : {
        "id": 3500401,
        "name": "Jing Chen",
        "isViewerFriend": true,
        "profilePicture": {
          "uri": "http://someurl.cdn/pic.jpg",
          "width": 50,
          "height": 50
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2019-12-12
      • 2019-11-01
      相关资源
      最近更新 更多