用户背景:
学校管理员登录仪表板。该页面在页面顶部显示一个数据块:
下面是一堆图表和图表,表示按月分解的服务使用情况,按小时分解的每日使用情况等。
我的问题:
我尝试在REST主体之后构建API,其中端点应定义资源,HTTP动词作为对这些资源采取的操作。我的问题是为这个更具分析性的问题构建端点。并且汇总的数据似乎并不适合我的资源。理想情况下,每个图形或图表可以是对端点的一个请求,顶部的聚合数据块也是它自己的请求,而不是3个请求(每个数据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客户端与您的域进行交互所需的表示。
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];