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.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 验证虚

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.