过去两周我一直在玩Web Api 2.0和OData 2.0。我想知道何时使用OData路由和Web Api属性路由。
谢谢,
帕
答案 0 :(得分:1)
Web API是用于创建HTTP端点(Web API / REST API)的通用框架。您还可以使用它来创建OData端点,这是ASP.NET Web API的一个更具体的应用程序。
因此,第一个问题是您是要创建OData端点还是其他类型的REST API。
如果要创建OData端点,请使用OData路由。否则使用“常规”Web API路由
答案 1 :(得分:1)
Web API路由
您可以使用默认路由,但如果您想定义路由模板,那么您可以使用AtrributeRouting,它使用基于约定的路由 在这种类型的路由中,您可以定义一个或多个路径模板,这些模板基本上是参数化字符串。 当框架收到请求时,它会将URI与路由模板匹配
安装以下nuget包:
"Install-Package Microsoft.AspNet.WebApi.WebHost"
在" WebApiConfig.cs"中添加以下行:文件
config.MapHttpAttributeRoutes();
创建您的webapicontroller,如下所示
[Route("api/users")]
public HttpResponseMessage GetUsers(int userId)
{
您可以像以下网址一样访问您的网址:
http://localhost:8080/api/users/
Web API Odata路由
当你想使用IQueryable而不是IEnumerable时,你可以使用odata
为odata安装nuget包
"Microsoft.AspNet.WebApi.OData"
在" WebApiConfig.cs"中添加以下代码文件
var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<ViewTest>("TestOdata");
var model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute(routeName: "OData", routePrefix: "odata", model: model);
在&#34; UsersOdataController.cs&#34;中添加以下代码文件
public class TestOdataController : OdataController
{
//GET odata/TestOdata
public IQueryable<ViewTest> Get()
{
try
{
return context.View_TestRepository.GetQueryable();
}
catch (Exception ex)
{
throw ex;
}
}
}
ViewTest:查看包含所需列的模型类 View_TestRepository:存储库类
您可以通过以下网址访问odata网络API:
"http://localhost:8080/odata/TestOdata"