我现在正在尝试构建一个 POC,以便轻松调用 Web API Odata 服务。可以轻而易举地使用默认提供的元数据文档的 Atom/xml 格式,或者它应该仅采用 json 格式。
我检查了 web api 的源代码,特别是 ODataMediaTypeFomatters 并确定元数据的 ODataPayloadKind 不是 JsonMediaTypeFormatter 的一部分。
我尝试使用 atom/xml 格式,但微风客户端无法进行该调用。
提前致谢, Teja
我现在正在尝试构建一个 POC,以便轻松调用 Web API Odata 服务。可以轻而易举地使用默认提供的元数据文档的 Atom/xml 格式,或者它应该仅采用 json 格式。
我检查了 web api 的源代码,特别是 ODataMediaTypeFomatters 并确定元数据的 ODataPayloadKind 不是 JsonMediaTypeFormatter 的一部分。
我尝试使用 atom/xml 格式,但微风客户端无法进行该调用。
提前致谢, Teja
现在微风只支持json。
但是,请随时向 Breeze 用户语音添加对其他格式的请求https://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions。我们认真对待这些建议。
另外,请查看 Breeze 示例 zip 中的新 Breeze OData 示例。
我们需要区分元数据格式和数据格式。AFAIK,OData元数据始终以 XML 形式返回。元数据现在没有,也从来没有 JSON 格式。而且 Breeze 一直使用来自 OData 源的元数据的 XML 表示(我记得这是一项外包给 dataJS 库的任务)。
OData 支持多种格式的查询和保存数据,尽管 JSON 似乎越来越重要。
我猜您遇到的问题是 Web API OData 没有返回 Breeze 所需的完整元数据。它的主要缺陷是它省略了支持关联的外键属性的定义。微软知道这一点,并承诺在未来修复它。
同时,OData 团队的一名成员提供了一个简单的解决方法,我们将其放入 nuget 包中以使其更容易。
您会发现我们的Web API OData 示例对此进行了描述。该示例包含在完整的 Breeze 下载中,可从Breeze 下载页面访问。
最后,问你一个问题。为什么选择使用 Web API OData 而不是直接的 Web API 来编写应用程序? 我不评判。我很好奇。我们想了解这些密切相关的替代品的比较价值点。谢谢。