ASP.NET Core OData 入门

2024-02-05 13:18
文章标签 入门 core asp net odata

本文主要是介绍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 入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681031

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服