如何为 LOB 应用程序中的多个视图设计 REST API
Posted
技术标签:
【中文标题】如何为 LOB 应用程序中的多个视图设计 REST API【英文标题】:How to design REST APIs for multiple views in LOB applications 【发布时间】:2015-11-10 06:58:57 【问题描述】:我目前正在为我们的服务设计而苦苦挣扎。我们使用许多 CRUD 操作构建 LOB 应用程序。我们首先使用 ASP.NET Web API 开始。
我们遇到的一个问题是我们有许多不同的视图在使用我们的 API。每个视图都有不同的要求。例如,视图需要...
我们服务的“家庭”实体 嵌入家庭成员的“家庭”实体 只有字段子集的“家族”实体 我们实体的不同表示我们决定使用 OData 来解决这个问题,但很快我们就遇到了更多问题:
微软打折WCF数据服务的开发,所以我们不得不使用WebAPI的OData实现。与 WCF 数据服务不同,您必须使用 WebAPI 控制器自己实现每个基本的 CRUD 操作(我们为此构建了一个基类以使其保持干燥) WebAPI (OData v4) 中的实现缺少 OData v4 规范中的许多功能,例如更新子资源、链接操作(如 $expand($top))。我们为此在 GitHub 上创建了问题,但这些问题并没有太大进展。我真的不明白其他公司是如何做到这一点的。对我来说,许多博客文章和教程中描述的“标准 REST 服务”对于我迄今为止构建的几乎每个 LOB 应用程序来说都太基础了。唯一可行的解决方案是为每个子资源发送 HTTP 请求:
GET /api/families/5 GET /api/families/5/tags GET /api/families/5/members GET /api/families/5/address GET /api/families/5/contact但这对我来说听起来像是一个巨大的可扩展性问题。
一些公司正在研究这个问题:Facebook 推出了自己的查询语言和框架(GraphQL/Relay),Netflix 正在研究 FALCOR。
现在这个问题是如何解决的?我猜不是每个人都在使用 OData。
【问题讨论】:
【参考方案1】:查询字符串不起作用吗?
GET /api/families/5
GET /api/families/5?view=withMembers
GET /api/families/5?view=view2
...etc
【讨论】:
以上是关于如何为 LOB 应用程序中的多个视图设计 REST API的主要内容,如果未能解决你的问题,请参考以下文章
如何为我的 UITableView 设计一个异步图像下载器,根据表格视图中的位置优先下载?
如何为 FrameLayout 中的多个视图制作浮动上下文菜单?
如何为 UICollectionViewCompositionalLayout 中的不同部分设置多个背景视图