我有一个简单的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”元数据值。
[--- EDIT ----]
基于the link提出的Dylan Nicholson(谢谢!),确实它在ODataMediaTypeFormatter上存在一个钩子,可以更改服务URI基址。
但在我的测试中,它没有用/我没有设法让它适用于@ odata.context URI。因此,从链接和测试到测试的链接,我到达here并且lencharest的解决方案非常有效:使用自定义URL帮助程序重写每个链接基址。我将来会看到它是否过于野蛮......
答案 0 :(得分:1)
@Max
要取消@ odata.context,您可以使用“application / json; odata.metadata = none”