【问题标题】:Best Practice for Returning a child data contracts as a Rest URL (REST API)将子数据合同作为 Rest URL (REST API) 返回的最佳实践
【发布时间】:2015-01-30 14:02:00
【问题描述】:

我正在使用 WCF-RestAPI 开发一个 API。我遇到了一个问题,我们的 GET 正在返回子实体(数据合同)中包含的太多信息。我们决定改为返回一个 URL,应该访问该 URL 以获取子实体。

例如;

{
  "date": "2014-12-01T00:00:00Z",
  "contractor": {
    "contractorReference": "DEFREF",
    "contractorName": "Default Supplier",
    "mainTelephone": "123456789",
    "mainAddress": {
      "fullAddress": "Default Supplier Street DefaultTown United Kingdom"
    },
    "mainFax": null,
    "webAddress": null,
    "comment": null
  },
  "moreinfo": "data"
}

会变成这样的

{
  "date": "2014-12-01T00:00:00Z",
  "contractor": "https://rest-api/contractor/{id}",
  "moreinfo": "data"
}

REST API 中是否有内置内容或执行此操作的标准方式?我正在考虑在可能名为“IsLinkable”的数据合同上创建一个属性,并在序列化的操作过滤器上选择它。不过不确定这是最好的解决方案。

【问题讨论】:

  • 面临同样的问题。你找到解决办法了吗?
  • 在那里查看我的回答,希望对您有所帮助。

标签: c# .net wcf wcf-rest


【解决方案1】:

我没有发现框架中内置的任何东西可以立即执行此操作。我通过将子数据合同替换为用于保存 URL 的字符串属性来解决这个问题。然后将使用数据合约本身的反射和属性来构建这些。

即我有一个属性,其中包含我在属性中指定的子实体的唯一标识符(例如 UserId)以及路由..(例如 Users/{id})。然后,我设置了一个操作过滤器,它将在将填充的数据合同返回给用户之前执行,这将使用上述方法构建 URL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 2013-10-23
    • 1970-01-01
    • 2020-05-29
    • 2018-04-27
    • 2018-05-25
    • 2020-04-23
    相关资源
    最近更新 更多