【问题标题】:How to design REST APIs for multiple views in LOB applications如何为 LOB 应用程序中的多个视图设计 REST API
【发布时间】: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。

【问题讨论】:

    标签: api rest


    【解决方案1】:

    查询字符串不起作用吗?

    GET /api/families/5 GET /api/families/5?view=withMembers GET /api/families/5?view=view2 ...etc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2016-12-29
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多