【问题标题】:How to design endpoints for data not considered as a resource in a REST API如何为 REST API 中不被视为资源的数据设计端点
【发布时间】:2017-10-09 10:45:16
【问题描述】:

用户上下文:

学校管理员登录仪表板。该页面在页面顶部显示一个数据块:

  1. 过去一周使用该服务的学生人数
  2. 学生在过去一周留下的总体反馈(正面、负面、中立)百分比。
  3. 其他汇总数据

下面是一堆图表,表示按月细分的服务使用情况、按小时细分的每日使用情况等。

我的问题:

我正在尝试构建一个遵循 REST 主体的 API,其中端点应该定义一个资源和 HTTP 动词作为对这些资源采取的操作。我的问题是为这种更具“分析性”和聚合数据构建端点,这些数据似乎并不适合我的资源中的任何地方。理想情况下,每个图形或图表可以是对端点的一个请求,顶部的聚合数据块也将是它自己的请求,而不是 3 个请求(每条数据 1 个)。有人可以指导我如何为这些特定场景构建端点吗?

谢谢

【问题讨论】:

    标签: rest api api-design


    【解决方案1】:

    有人可以指导我如何为这些特定场景构建端点吗?

    TL;DR:您将如何构建一个网站来支持这些场景?这样做。

    如果您使用的是文档存储之类的东西,那么您将获取 URI,例如 /feedbackReports/lastWeek,并将其用作键,然后从文档存储中提取该报告的表示形式,并将其返回给客户端(以及各种元数据)。

    如果您使用的是文件系统之类的东西,那么您将获取 URI,并构造一些对文件的引用,例如 /www_root/feedbackReports/lastWeek,然后从磁盘读取该报告的表示形式,并将其返回给客户端(以及各种元数据)。

    您是否正在使用关系数据库之类的东西,然后您将获取 URI,并看到正在请求“上周”报告,然后您将向其中注入一堆“-7 天”参数准备好的语句,并运行它们,然后将内存中的数据重塑为该报告的某种表示形式,并将其返回给客户端(连同各种元数据)。

    我正在尝试构建一个遵循 REST 主体的 API,其中端点应定义资源和 HTTP 动词作为对这些资源采取的操作

    所讨论的 REST 原则是 API 将客户端(和中间组件)与所有实现细节隔离开来。 API 是您的应用程序佩戴的面具,以便网络集成正常工作。

    我的问题是为这种更具“分析性”和聚合数据构建端点,这些数据似乎并不适合我的资源中的任何地方。

    所以创造更多的资源。

    注意:这些是集成资源;也就是说,它们生成 Web 客户端与您的域交互所需的表示。

    Jim Webber, in 2008

    URIs do NOT map onto domain objects - that violates encapsulation.  
    Work (ex: issuing commands to the domain model) is a side effect of 
    managing resources.  In other words, the resources are part of the
    anti-corruption layer.  You should expect to have many many more 
    resources in your integration domain than you do business objects 
    in your business domain.
    

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多