使用 ASP.NET Core 5 Web API 创建可发现的 HTTP API
使用 ASP.NET Core 5 Web API 创建可发现的 HTTP API
https://devblogs.microsoft.com/aspnet/creating-discoverable-http-apis-with-asp-net-core-5-web-api/
这个月,我们将关注使用 .NET 5 创建 HTTP API。我们将探索各种不同的工具、技术和服务来使你的 API 开发体验更为愉快。每一周,我们将在本博客发布一篇关于使用 .NET 构建 HTTP API 不同领域的文章,主要关注于使用 ASP.NET Core 5 Web API 和 OpenAPI 标准两者来构建、发布、消费和重用良好说明的 Web。下面是寄到到来的一个系列。
- Creating Discoverable HTTP APIs with ASP.NET Core 5 Web API (this post)
- Open-source HTTP API packages and Tools
- Generating HTTP API clients using Visual Studio Connected Services
- App Building with Azure API Management, Power Apps, and Logic Apps
考虑设计优先
如果你曾经在 Visual Studio 中右键 Add Web Reference 来添加一个 SOAP Web 服务,或者,当 WCF 出现的时候,使用 Add Service Reference 来添加它,您就会知道这些工具及其对标准描述格式的支持(Web 服务定义语言 (WSDL) 为您的开发体验带来的快乐。
OpanAPI 规范
定义良好的 API 对于开发、维护和使用它是友好的。在开发过程中,使用这些包来描述你的 API, 通过遵循一些简单的约定,你的 API 将更加可发现、与其它产品和云服务集成的集成会更加容易,通常来说,提供更多的使用场景。
示例项目
本文使用一个简单的 Visual Studio 解决方案。在该解决方案中,你将发现一个简单的用于 Contoso 在线订单的 Web API 工程。随着进行,
https://github.com/bradygaster/Contoso.Online.Orders?WT.mc_id=dotnet-13135-bradyg
ProducesAttribute
设定 API 输出的类型
对应的,ConsumesAttribute 用来指定请求 API 的内容类型。
[Produces("application/json")]
[Consumes("application/json")]
还可以使用 MediaTypeName 来更加简单的使用众所周知的媒体类型值。
可以在 Controller 级别为所有的请求和响应设置为 JSON 类型。
[Route("[controller]")]
[ApiController]
#if ProducesConsumes
[Produces(MediaTypeNames.Application.Json)]
[Consumes(MediaTypeNames.Application.Json)]
#endif
public class AdminController : ControllerBase
{
// controller code
}

HTTP Response Codes
如果成功,返回 200 OK,和实际的产品。
否则,会返回 404
[HttpGet("/products/{id}")]
public async Task<ActionResult<Product>> GetProduct(int id)
{
var product = StoreServices.GetProduct(id);
if(product == null)
{
return NotFound();
}
else
{
return Ok(product);
}
}
但是,OpenAPI 的 JSON 对于该方法仅仅提供了 200 响应码,默认的 GET 行为。
Web API 约定
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
#if ApiConventions
[assembly: ApiConventionType(typeof(DefaultApiConventions))]
#endif
namespace ContosoOnlineOrders.Api
{
public class Program
{
支持 OpenAPI operationId
用来区分每个操作的标识
使用 ASP.NET Core 5 Web API 创建可发现的 HTTP API的更多相关文章
- angular4和asp.net core 2 web api
angular4和asp.net core 2 web api 这是一篇学习笔记. angular 5 正式版都快出了, 不过主要是性能升级. 我认为angular 4还是很适合企业的, 就像.net ...
- ASP.NET Core 2 学习笔记(十二)REST-Like API
Restful几乎已算是API设计的标准,通过HTTP Method区分新增(Create).查询(Read).修改(Update)和删除(Delete),简称CRUD四种数据存取方式,简约又直接的风 ...
- ASP.NET Core on K8S学习初探(3)部署API到K8S
在上一篇<基本概念快速一览>中,我们把基本的一些概念快速地简单地不求甚解地过了一下,本篇开始我们会将ASP.NET Core WebAPI部署到K8S,从而结束初探的旅程. Section ...
- 在ASP.NET Core 2.2 中创建 Web API并结合Swagger
一.创建 ASP.NET Core WebApi项目 二.添加 三. ----------------------------------------------------------- 一.创建项 ...
- 使用angular4和asp.net core 2 web api做个练习项目(一)
这是一篇学习笔记. angular 5 正式版都快出了, 不过主要是性能升级. 我认为angular 4还是很适合企业的, 就像.net一样. 我用的是windows 10 安装工具: git for ...
- 使用angular4和asp.net core 2 web api做个练习项目(四)
第一部分: http://www.cnblogs.com/cgzl/p/7755801.html 第二部分: http://www.cnblogs.com/cgzl/p/7763397.html 第三 ...
- ASP.NET Core Restful Web API 相关资源索引
GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...
- ASP.NET Core 3.1 WebApi+JWT+Swagger+EntityFrameworkCore构建REST API
一.准备 使用vs2019新建ASP.NET Core Web应用程序,选用api模板: 安装相关的NuGet包: 二.编码 首先编写数据库模型: 用户表 User.cs: public class ...
- (17)ASP.NET Core EF基于数据模型创建数据库
1.简介 使用Entity Framework Core构建执行基本数据访问的ASP.NET Core MVC应用程序.使用迁移(Migrations)基于数据模型创建数据库,你可以在Windows上 ...
- (18)ASP.NET Core 基于现有数据库创建EF模型(反向工程)
1.简介 Entity Framework Core可通过数据库提供给应用程序的插件访问许多不同的数据库.我们可以通过使用Entity Framework Core构建执行基本数据访问的ASP.NET ...
随机推荐
- Linux工具:Winscp显示隐藏的文件
事件起因: 需要用Winscp上传文件到服务器,然后发现文件被隐藏了 解决办法: Winscp软件的快捷键 : Ctrl + Alt + HWindscp软件的设置方法: 菜单栏 选项 -> 面 ...
- kali系统安装和CVE-2017-12615测试
1 安装kali系统 1.1 下载VMware压缩包 kali-linux-2022.1 默认的用户和密码是kali 1.2 初始化系统 sudo apt update -y #kali sudo a ...
- CMake 属性之目标属性
[写在前面] CMake 可以通过属性来存储信息.它就像是一个变量,但它被附加到一些其他的实体上,像是一个目录或者是一个目标.例如一个全局的属性可以是一个有用的非缓存的全局变量. 在 CMake 的众 ...
- SMMU中stage1 和stage2 的意思
ARM SMMU(System Memory Management Unit)是一种用于ARM架构的内存管理单元,它支持两阶段的地址转换机制,即Stage 1和Stage 2.这种机制允许操作系统和虚 ...
- MyBatis的常见面试题
MyBatis 1.什么是MyBatis MyBatis是一款优秀的半自动化的持久层框架.支持自定义 SQL.存储过程以及高级映射. 2.MyBatis的特点? 简单.灵活.解耦.丰富的标签 3.My ...
- 数据库周刊59丨GaussDB(for openGauss)开放商用;人大金仓保障冬奥会演练顺利完成;MDL锁导致的MySQL问题分析;PG日志使用手册;达梦表空间查询;数据库笔试题面试题集……
热门资讯 1.openGauss 上线华为云正式商用 - GaussDB(for openGauss) [摘要]近日,GaussDB(for openGauss)已于华为云官网全面开放商用.该产品是华 ...
- 博客配套视频已上传至 B 站,欢迎关注
博客配套视频已上传至 B 站,欢迎关注+一键三连 链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 链接 ...
- 云原生周刊:K8s 上的 gRPC 名称解析和负载平衡
开源项目推荐 Kraken Kraken 是一个基于 P2P 的 Docker 注册表,专注于可扩展性和可用性.它专为混合云环境中的 Docker 镜像管理.复制和分发而设计.借助可插拔的后端支持,K ...
- Kubernetes 边缘节点抓不到监控指标?试试这个方法!
KubeSphere v3.1.0 通过集成 KubeEdge,将节点和资源的管理延伸到了边缘,也是 KubeSphere 正式支持边缘计算的第一个版本. 笔者也第一时间搭建和试用了边缘节点相关的功能 ...
- 用微软商店商店安装 Python
在安装 Python 时,除了在官网 www.python.org 下载,还可以用微软商店下载 安装完成后,其目录位于C:\Users\<用户名>\AppData\Local\Micros ...