本文主要是介绍ASP.NET Core OData 入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OData 的意思是开放数据协议(Open Data Protocol,缩写为 OData),是一种描述如何创建和访问 Restful 服务的 OASIS 标准。该标准由微软发起,前三个版本1.0、2.0、3.0 都是微软开放标准,第四个版本 4.0 于 2014 年 3 月 17 日在 OASIS 投票通过成为开放工业标准。
可以简单地把 OData 理解为 Restful API 的一种标准化。目前微软和 SAP 公司对 OData 提供了成熟的实现,其它语言也有一些实现,但感觉偏小众。
本文介绍使用 asp.net core 3.1 来构建 OData V4 的方法。因为 asp.net core OData 的实现也在快速迭代,建议学习的时候,选择与教程相同的 NuGet OData 版本。
创建 ASP.NET Core Web Api 工程
在 Visual Studio 2019 中,创建一个新的 ASP.NET Core Web Api 工程,将工程命名为 AspNetCoreODataHello:
使用 .Net Core 3.1:
安装 Microsoft.AspNetCore.OData 库
通过菜单 Tools -> NuGet Package Manager -> Manage Nuget Packages for Solution 安装 Microsoft.AspNetCore.OData。
使用 7.3.0 版本。
编写 Model 和 Controller 代码
在工程中添加 Models 文件夹,在 Models 文件夹中添加 Student 类:
using System;namespace AspNetCoreODataHello.Models
{public class Student{public Guid Id { get; set; }public string Name { get; set; }public int Score { get; set; }}
}
选中 Controllers 文件夹,添加 StudentsController 类。
选择 API 类型的 Controller:
将 Controller 命名为 StudentsController。在 Controller 中编写如下代码:
namespace AspNetCoreODataHello.Controllers
{[Route("api/[controller]")][ApiController]public class StudentsController : ControllerBase{[HttpGet]public IEnumerable<Student> Get(){return new List<Student>{new Student{Id = Guid.NewGuid(),Name = "Vishwa Goli",Score = 100},new Student{Id = Guid.NewGuid(),Name = "Josh McCall",Score = 120}};}}
}
通过硬编码的方式,创建了 2 个学生的数据。此时已经可以运行程序,通过 url: http://localhost:5000/api/students 访问。
提供 OData 服务
在 Startup.cs 文件中编写 GetEdmModel() 方法,用于获取 Student 的 EDM (Entity Data Model):
private IEdmModel GetEdmModel()
{var edmBuilder = new ODataConventionModelBuilder();edmBuilder.EntitySet<Student>("Students");return edmBuilder.GetEdmModel();
}
注册服务:
public void ConfigureServices(IServiceCollection services)
{services.AddControllers(mvcOptions =>mvcOptions.EnableEndpointRouting = false);services.AddOData();
}
添加 UseMvc 中间件,注释掉 UseEndpoints 中间件:
在 StudentsController 的 Get() 方法前添加 EnableQuery() 特性,支持 OData 的查询语法:
使用 Postman 测试
查看元数据:
参考
- Experimenting with OData in ASP.NET Core 3.1 | OData
- Enabling OData in ASP.NET Core 3.1 (Experimental) - YouTube
- ASP.NET Core OData now Available | OData
- ASP.NET Core OData 8.0 Preview for .NET 5 | OData
- Ecosystem · OData - the Best Way to REST
源码
AspNetCore - OData/AspNetCoreODataHello
这篇关于ASP.NET Core OData 入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!