当WebAPI响应诸如http://server/vroot/odata之类的请求时,哪些代码在响应

本文关键字:响应 请求 代码 odata WebAPI http vroot server | 更新日期: 2023-09-27 18:02:07

WebAPI具体响应:

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

这里需要注意的一件重要的事情是控制器名称动作名称和参数名称都很重要。数据控制器和操作选择的工作方式与Web API中的略有不同。而不是基于路由参数,OData控制器和操作选择基于请求URI的OData含义。所以例如,如果你要求http://my.server.com/vroot/odata/$metadata,请求将实际得到分派给返回元数据的单独的特殊控制器OData服务的文档。注意控制器的名称匹配前面定义的实体集名称。我会试着进入在以后的博客文章中会有更多关于OData路由的深入介绍。)

当WebAPI响应诸如http://server/vroot/odata之类的请求时,哪些代码在响应

  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