本文属于 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 模式之间反复横跳了,治愈了我的强迫症。

武装你的WEBAPI-OData使用Endpoint的更多相关文章

  1. OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client

    一.概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of quer ...

  2. [转]OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client

    本文转自:http://www.cnblogs.com/bluedoctor/p/4384659.html 一.概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open ...

  3. Create an OData v4 Endpoint Using ASP.NET Web API 2.2(使用ASP.NET Web API 2.2创建OData v4端点)

    开放数据协议Open Data Protocol(OData)是web的一种数据存取协议,OData通过设置CRUD操作(Create创建.Read读取.Update更新,Delete删除)提供一种统 ...

  4. AspNet WebApi OData 学习

    OData介绍:是一个查询和更新数据的Web协议.OData应用了web技术如HTTP.Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务 和存储的信息访问.除了提供一些基本的操 ...

  5. AspNet.WebAPI.OData.ODataPQ

    AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务 AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔) AspNet. ...

  6. AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)

    AspNet.WebAPI.OData.ODataPQ 这是针对 Asp.net WebAPI OData 协议下,查询分页.或者是说 本人在使用Asp.Net webAPI 做服务接口时写的一个分页 ...

  7. 主攻ASP.NET MVC4.0之重生:Asp.Net MVC WebApi OData

    1.新建MVC项目,安装OData Install-Package Microsoft.AspNet.WebApi.OData -Version 4.0.0 2.新建WebAPI Controller ...

  8. AspNet.WebAPI.OData.ODataPQ实现WebAPI的分页查询服务-(个人拙笔)(转)

    出处:http://www.bubuko.com/infodetail-827612.html AspNet.WebAPI.OData.ODataPQ 这是针对 Asp.net WebAPI ODat ...

  9. [转]Composite Keys With WebApi OData

    本文转自:http://chris.eldredge.io/blog/2014/04/24/Composite-Keys/ In our basic configuration we told the ...

  10. [转]Creating an OData v3 Endpoint with Web API 2

    本文转自:https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata- ...

随机推荐

  1. 一个SMMU内存访问异常的问题

    最近碰到棘手的问题: 以太网进行iperf测试时, 发生了SMMU (System Memory Management Unit)访问异常导致内核崩溃. 原本只是内部测试发现, 后面在试验车上也概率性 ...

  2. python安装sklearn

    安装sklearn这个包,首先要安装三个依赖包,如图划红线的部分. 要找这三个包,我们都可以登录:https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy 这 ...

  3. 谈一谈你对vue指令的理解

    vue指令的本质是给 html 标签新增一些属性 : vue的指令可以分为 3 中类型 : 1. 用于渲染数据的指令,比如 v-for ,v-if ,v-show : 2. 用来交互的指令 ,v-on ...

  4. kotlin类和对象—>接口

    1.接口定义,使用关键字interface 来定义接口 interface MyInterface { fun bar() fun foo() { // 可选的方法体 } } 2.实现接口,一个类和对 ...

  5. 祝贺开源之夏 2023 KubeSphere 社区项目中选学生!

    日前,开源之夏 2023 所有中选结果已出炉,在此祝贺各位中选的同学! 活动简介 开源之夏是由中科院软件所"开源软件供应链点亮计划"发起并长期支持的一项暑期开源活动,旨在鼓励在校学 ...

  6. WinSCP 脚本实现将 jar 包一键上传 Ubuntu 并 docker 部署

    准备 首先,在 Ubuntu 写一个.sh 脚本用于自动更新 jar 包的 docker 容器和镜像,然后在 Windows 写一个.bat 脚本用于上传 jar 包并运行.sh 脚本. deploy ...

  7. Springboot异步事件配置和使用

    Spring中提供了完整的事件处理机制,本身底层内置实现了一些事件和监听,同时支持开发者扩展自己的事件和监听实现. 一般这种基于事件的实现在项目实际开发中我们主要用来解耦,和做异步处理(默认是同步), ...

  8. 基于surging的木舟平台如何上传模块热部署

    一.概述 通过3个月的赶工,基本上快完成1.0版本的研发,将在下个月发布社区1.0版本. 木舟 (Kayak) 是什么? 木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行 ...

  9. 【JVM第3课】运行时数据区

    运行时数据区结构图如下: 可分为 5 个区域,分别是方法区.堆区.虚拟机栈.本地方法栈.程序计数器.这里大概介绍一下各个模块的作用,会在后面的文章展开讲. 类加载子系统会把类信息加载到方法区,程序运行 ...

  10. 为什么我越来越喜欢用DDD — DDD架构篇(1)

    Hello DDD DDD 是一种软件设计方法,DDD 是指导我们做软件工程设计的一种手段.它提供了用切割工程模型的各类技巧,如:领域.界限上下文.实体.值对象.聚合.工厂.仓储等.通过 DDD 的指 ...