【问题标题】:C# Odata customize native metadataC# Odata 自定义原生元数据
【发布时间】:2017-12-13 18:26:06
【问题描述】:

我有一个返回人员的简单 Odata V4 服务。

此服务不可直接访问:

我的问题是我们可以在服务响应“@odata.context”元数据中看到真正的最终服务器 URL,因此调用 http://myApigeeServer/Person('foo') 会导致两个响应:

{
    "@odata.context": "http://myFirstServer/$metadata#Person/$entity",
    "FirstName": "John",
    "LastName": "Doe",
    "Phone@odata.type": "#Collection(String)",
    "Phone": [
        "+123456789"
    ],
}

或者

{
    "@odata.context": "http://mySecondServer/$metadata#Person/$entity",
    "FirstName": "John",
    "LastName": "Doe",
    "Phone@odata.type": "#Collection(String)",
    "Phone": [
        "+123456789"
    ],
}

我真的必须隐藏最终的服务器名称。所以我的问题是:是否可以完全删除“@odata.context”元数据或对其进行自定义?在我的情况下,自定义意味着使用 Apigee URL 强制“@odata.context”元数据值。

[---编辑----]

基于Dylan Nicholson 提出的the link(谢谢!),确实在 ODataMediaTypeFormatter 上存在一个挂钩,可以更改服务 URI 基地址。

但在我的测试中,它不起作用/我没有设法使它适用于 @odata.context URI。因此,从链接到链接和测试到测试,我到达了herelencharest 的解决方案效果很好:使用自定义 URL 帮助程序来重写每个链接基地址。以后看会不会太虐了……

【问题讨论】:

标签: c# odata metadata


【解决方案1】:

@Max

要抑制@odata.context,您可以使用“application/json;odata.metadata=none”

【讨论】:

  • 这是一个很好的解决方法,谢谢 Sam。它有效,我暂时使用它。但这对我来说有点激进,我宁愿修改链接也不愿隐藏所有元数据。看看我在编辑中做了什么
猜你喜欢
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多