REST API:如何获取对象和流行对象,它们应该是相同的API还是单独的API?

时间:2017-05-26 08:56:12

标签: rest api restful-architecture

我们有几个API端点,如:

/ api / cities / =>获取我们数据库中的所有城市。这是一个过于简单的例子,实际上我们有大约1k个城市。

{
         "name": "Chicago",
         "name": "Los Angeles",
         "name": "New York",
         "name": "Phoenix"
}

目前,这些API按字母顺序返回城市列表。

我们有新的要求,我们需要在顶部获取热门城市,然后按字母顺序列出。

JSON输出看起来像:

{
   "popular"
   {
     "name": "New York",
     "name": "Los Angeles"
   },
   "all"
   {
      "name": "Chicago",
      "name": "Los Angeles",
      "name": "New York",
      "name": "Phoenix"
   }
}

如何修改当前的API以实现此目的:

  1. 我们应该创建像/ api / popularcities /这样可以获取热门城市列表的新API吗?这样客户端首先调用/ api / popularcities /然后调用/ api / cities / API。
  2. 我们是否应该在现有的API / api / cities /?fetch = popularall中添加查询字符串参数来获取热门和所有城市。
  3. 或者其他任何东西,这看起来不像过滤器属性,因为这实际上是在顶部添加结果而不是过滤掉它。

    我们确实需要在所有城市列表中重复流行城市,因为这将直接绑定到UI下拉列表,并且要求保持字母顺序完整。

    建议?

2 个答案:

答案 0 :(得分:1)

popular个城市是对相同实体进行排序的一种方式。

它不应该是新资源,而是以不同方式查询相同资源以获取所需条目的方式。

我会使用查询:?sort=popular

答案 1 :(得分:0)

你可以使用两个端点,一个端点,如api fetch的快捷方式,按流行顺序排序。

  1. /城市?排序=流行
  2. / popular_cities