2012-07-13 59 views
0

我们正在考虑将Odata和WebAPI结合起来创建api。我正在看的一件事是将OData数据服务映射到与WebApi控制器相同的URL。我们可以使用OData的强大功能及其查询支持来提供只读信息。然后使用WebApi控制器方法接受更新。通过这种方式,我们可以更好地控制发送到系统中的任何更新。 到目前为止,我试图用路由来做到这一点。我可以在相同的URL设置WCF数据服务和WebAPI方法

DataServiceHostFactory factory = new DataServiceHostFactory(); 
RouteTable.Routes.Add(new ServiceRoute("api/SDAApi", factory, typeof(ReadService))); 

因此,我添加了一个路由到我的ReadService这是Odata数据服务。 SDAApi与我的控制器名称相匹配。 在我的控制器上,我有一个方法SoftwareDownloadRequestsPost,它与我从ReadService - SoftwareDownloadRequests请求的集合相匹配。

当我在浏览器中获取url〜/ Api/SDAApi/SoftwareDownloadRequests时,我得到了预期的项目列表。当我用简单的表单发布一个帖子时,我会得到一个回复​​。 “不支持内容类型'application/x-www-form-urlencoded'。” 由于此表单发布后,我有它在不同的网址,我假设它是由冲突造成的。

所以回到我的问题,这可能吗?如果它是关于如何解决我的错误的任何想法?

我使用VS 2012 RC和.NET 4.5

回答

0

我想不出你会想这样做一个很好的理由。

ASP.NET Web API公开了RC中OData的一些重要功能(例如$ filter)。显然在未来的版本中会有更多的支持,尽管可能不在RTM中。

+0

我还没有听说他们有意提高WebApi中OData功能的级别,所以如果他们这样做是个好消息。 – Noel 2012-07-16 16:19:56

+0

@Noel http://aspnetwebstack.codeplex.com/discussions/359229。顺便说一句,你不会投票,下来或标记为答案。这是不好的**。 – Aliostad 2012-07-16 16:31:17

+0

我错过了5分钟的编辑窗口,但我会继续说 - 在这个时候这是一个穷人的实现,具有适度的功能和相当大的问题对我来说,这是在WebApi中,查询不是按照OData中的方式推送到数据库。也许这是一个可以解决的问题;我没有真正看过它。 – Noel 2012-07-16 16:37:06