【问题标题】:Designing REST api for returning count of multiple objects设计用于返回多个对象计数的 REST api
【发布时间】:2017-01-18 07:15:57
【问题描述】:

鉴于我需要返回应用程序中不同对象的计数,我应该如何设计我的 rest api 有一个问题。有多种方法可以考虑

  1. 定义一个通常接受请求正文 (json) 中的对象标识符并返回响应中每个对象标识符的计数的 api。缺点是 api 太通用了,因为没有资源,所以可能不够安静。该网址看起来像 GET /counts

  2. 为需要计数的每个资源定义单独的 api。假设我需要返回软件、表、流程、任务、作业等中定义的字段的计数,我将为这些资源中的每一个定义单独的 api。它看起来像 GET /field/count 或 GET /table/count。这样做的一个副作用是,我们需要计算的每个资源都会有许多 web api。这很糟糕吗?

请分享您对上述方法以及我可以设计符合 REST 标准的 API 的任何新方法的想法。

谢谢

【问题讨论】:

  • 为什么要使用不同的 API 进行计数?什么是计数数据的驱动力?如果它是用于 UI - 一次只有一个?还是所有信息都应该同时提供?
  • 据我所知,并不存在完全的“REST 标准”,“RESTful URL”的概念几乎是一个主观问题。核心 REST WS 原则主要关注其他事情,其中​​包括正确使用 HTTP 并提供理论上可以允许自动进程“理解”资源和 API 的信息(这在常见的“restful”接口中很少实现)。话虽如此,我会选择第二个变体,因为它更自然(即资源是有区别的) - 但是如果你的资源是“计数”,那么第一个也可以工作。
  • 是的,一次返回所有信息会更好。网址应该是什么样的? “算作资源”是什么意思?还有其他方法吗?

标签: rest api-design


【解决方案1】:

这完全取决于使用 API 的客户端。

案例 1。如果它是一个需要在单个页面上计算多个表的 WebApp,那么两者都会导致糟糕的设计,您将不得不为计数数据进行数百次调用。您可以在单个 API 中计算计数并将其作为响应发送。

案例 2。如果客户单独使用计数,那么我建议使用明确定义资源的第二种方法。对于第二种方法,您正在使客户端变得智能,这是不推荐的。

正如 cmets 中所述,REST 是一个完全主观的话题,因此每个设计都可以有多个观点。

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 1970-01-01
    • 2012-04-22
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多