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

相关文章

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(