将子数据协定作为Rest URL(REST API)返回的最佳实践

时间:2014-12-02 10:46:58

标签: c# .net wcf wcf-rest

我正在使用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”的属性,并在序列化的动作过滤器上选择它。不确定这是最好的解决方案。

1 个答案:

答案 0 :(得分:0)

我没有在框架中找到任何可以解决这个问题的内容。我通过用字符串属性替换子数据协定来解决问题。然后,这些将使用数据合约本身的反射和属性构建。

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