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

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

SpringMVC配置、映射与参数处理​入门案例详解

《SpringMVC配置、映射与参数处理​入门案例详解》文章介绍了SpringMVC框架的基本概念和使用方法,包括如何配置和编写Controller、设置请求映射规则、使用RestFul风格、获取请求... 目录1.SpringMVC概述2.入门案例①导入相关依赖②配置web.XML③配置SpringMVC

MySQL索引踩坑合集从入门到精通

《MySQL索引踩坑合集从入门到精通》本文详细介绍了MySQL索引的使用,包括索引的类型、创建、使用、优化技巧及最佳实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录mysql索引完整教程:从入门到入土(附实战踩坑指南)一、索引是什么?为什么需要它?1.1 什么

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚