2014-05-06 89 views
1

什麼特別的的WebAPI迴應:當WebAPI響應諸如http:// server/vroot/odata的請求時,哪些代碼響應?

1. http://server/vroot/odata 
2. http://server/vroot/odata?$metadata 
3. http://server/vroot/odata/Foo 

當請求#3,據我所知,我的 'FooController的' 響應爲 我WebApiConfig.cs配置。

但我不清楚WebAPI如何響應#1或#2。它如何知道 返回什麼?我的代碼中如何配置該響應?

更新:這是一個巨大的線索

http://blogs.msdn.com/b/webdev/archive/2013/01/29/getting-started-with-asp-net-webapi-odata-in-3-simple-steps.aspx

一個重要的事情在這裏意識到的是,控制器名, 動作名稱和參數名稱的所有問題。 OData控制器和 動作選擇的工作方式與Web API中的不同。 而不是基於路由參數,OData控制器和 操作選擇基於請求URI的OData含義。因此,例如,如果您提出請求 http://my.server.com/vroot/odata/ $ metadata,請求實際上會獲得 ,該請求將分派給單獨的特殊控制器,該控制器返回OData服務的元數據 文檔。請注意,控制器名稱 與我們之前定義的實體集名稱相匹配。我將在未來的博客文章中嘗試更深入地探討關於OData路由的 。 ]

回答

2
  1. 回報你Service Document
  2. 回報你Service Metadata Document

的WebAPI知道這一點,因爲你添加類似的路線來config.Routes.MapODataRoute("ODataRoute", "odata", model);

看看這個詳細的解釋:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/creating-an-odata-endpoint

+0

所以,它的人l WebAPI內部? – AlfredBr

+0

感謝您的鏈接。它幫助我意識到我應該問的問題是:什麼控制器提供「服務文檔」?答案:ODataMetadataController – AlfredBr