如何为REST API中不被视为资源的数据设计端点

时间:2017-05-10 16:42:21

标签: rest api api-design

用户背景:

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

  1. 过去一周内使用该服务的学生人数
  2. 过去一周学生留下的百分比反馈(正面,负面,中性)。
  3. 其他汇总数据
  4. 下面是一堆图表和图表,表示按月分解的服务使用情况,按小时分解的每日使用情况等。

    我的问题:

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

    由于

1 个答案:

答案 0 :(得分:2)

  

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

TL; DR:您将如何构建网站来支持这些方案?那样做。

如果您使用类似文档存储的东西,那么您将获取URI,例如/www_root/feedbackReports/lastWeek,并将其用作密钥,并从文档存储中提取该报告的表示,并将其返回到客户端(以及各种元数据)。

如果您使用类似文件系统的东西,那么您将获取URI,并构建对文件的一些引用,如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. ,并从磁盘读取该报告的表示,并将其返回到客户端(以及各种元数据)。

你是否正在使用类似关系数据库之类的东西,那么你会使用URI,并看到"上周"报告被要求,从那里你会注入一堆" -7天"将参数转换为预处理语句,然后运行它们,然后将内存中的数据重新整形为该报告的某种表示形式,并将其返回给客户端(以及各种元数据)。

  

我尝试在REST主体之后构建API,其中端点应该定义资源,HTTP动词作为对这些资源采取的操作

有问题的REST原则是API将客户端(和中间组件)与所有实现细节隔离开来。 API是您的应用程序所使用的掩码,以便Web集成正常工作。

  

我的问题是为这个更具分析性的问题构建端点。并且汇总的数据似乎并不适合我的资源。

因此,创造更多资源。

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

question

NSURL *requestURL = [NSURL URLWithString:url]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setHTTPMethod:@"PUT"];
[request setValue:mimeType forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:data];
[request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[data length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"public-read" forHTTPHeaderField:@"x-amz-acl"];
[request setURL:requestURL];
相关问题