武装你的WEBAPI-OData使用Endpoint
1.武装你的WEBAPI-OData入门2.武装你的WEBAPI-OData便捷查询3.武装你的WEBAPI-OData分页查询4.武装你的WEBAPI-OData资源更新Delta
5.武装你的WEBAPI-OData使用Endpoint
6.武装你的WEBAPI-OData之API版本管理7.武装你的WEBAPI-OData常见问题8.武装你的WEBAPI-OData聚合查询9.武装你的WEBAPI-OData与DTO10.OData WebAPI实践-OData与EDM11.OData WebAPI实践-Non-EDM模式12.OData WebAPI实践-兼容OData集合响应13.OData WebAPI实践-与ABP vNext集成本文属于 OData 系列文章
Introduction
更新:
由于新版的 OData
已经默认使用了 endpoint
模式(Microsoft.AspNetCore.OData 8.0.0),不再需要额外配置,本文已经过时(asp.net core 3.1
)。
最近看 OData 的 devblog,发现他们终于支持了新版的终结点(endpoint )模式路由了,于是我就迫不及待地试了试。
MVC 模式
现在的 OData 配置还是需要禁用 EnableEndpointRouting
,感觉和现在标准 ASP. NET CORE 套路格格不入。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(mvcOptions =>
mvcOptions.EnableEndpointRouting = false);
services.AddOData();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseMvc(routeBuilder =>
{
routeBuilder.Select().Filter();
routeBuilder.MapODataServiceRoute("odata", "odata", GetEdmModel());
});
//app.UseEndpoints(endpoints =>
//{
// endpoints.MapControllers();
//});
}
IEdmModel GetEdmModel()
{
var odataBuilder = new ODataConventionModelBuilder();
odataBuilder.EntitySet<Student>("Students");
return odataBuilder.GetEdmModel();
}
总之就是对强迫症非常不友好。
Endpoint 模式
终于,从 7.4 开始支持默认的 ASP. NET CORE Endpoint 模式了,你需要安装 7.4 的 odata 包:
Install-Package Microsoft.AspNetCore.OData -Version 7.4.0-beta
配置代码如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddOData();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.Select().Filter().OrderBy().Count().MaxTop(10);
endpoints.MapODataRoute("odata", "odata", GetEdmModel());
});
}
private IEdmModel GetEdmModel()
{
var odataBuilder = new ODataConventionModelBuilder();
odataBuilder.EntitySet<WeatherForecast>("WeatherForecast");
return odataBuilder.GetEdmModel();
}
}
后面就不用在 MVC 模式与 Endpoint 模式之间反复横跳了,治愈了我的强迫症。
本文作者:波多尔斯基
本文链接:https://www.cnblogs.com/podolski/p/17384041.html
版权声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-05-09 强迫症福利--收起.NET程序的dll来