使用 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 ...
随机推荐
- Windows应急响应-灰鸽子远控木马
目录 应急背景 木马查杀 1.查看异常连接 2.根据端口号查看对应进程文件 3.排查异常服务 4.发现启动项 开始查杀 入侵排查 1.账号排查 2.查看服务 3.查看启动项 4.查看计划任务 5.网络 ...
- 64.element表单校验注意点
<!-- 表单验证三要素: --> <!-- ① el-form需要有 model属性[表单数据对象].rules属性[验证规则对象].ref属性[引用字符串] --> < ...
- ASP.NET实现网站发布及跨域访问
1.软件下载及安装 visual studio 2012 or 2013 启用电脑IIS配置 2.网页编写及排版 在visual studio中创建web项目添加aspx页面(个人网页:和html差不 ...
- day06-Hello World案例
HelloWorld 象征着作为一个程序员向世界的第一声呐喊 新建一个文件夹用来存放代码 新建一个java文件 文件后缀名为.java Hello.java [注意]系统可能没有显示文件的后缀名,需要 ...
- Junit5
JUnit5 安卓build.gradle https://github.com/mannodermaus/android-junit5 Unit 3 或 JUnit4 的向后兼容性 JUnit4 已 ...
- 物理实验霍尔效应判断P/N型半导体笔记
最近这不要物理实验期末考试了嘛,我火速抄起实验书准备复习. 复习到霍尔效应判断P/N型半导体这一部分时很惊奇地发现网上一会儿还搜不出个明了的总结,也有很多误导性的判断方法.Σ( ° △ °|||)︴ ...
- 工作中的技术总结_ thymeleaf的应用 _select&input的数据回显 _20210910
工作中的技术总结_ thymeleaf的应用 _select&input的数据回显 _20210910 在需要用户输入的场合,常常会有对用户填入数据的验证,对数据的验证不通过则需要返回到表单页 ...
- JS函数:递归函数与迭代函数
1.递归函数 : 程序中调用自己的函数 程序调用自身的编程技巧称为 递归( recursion).递归作为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方 ...
- PBI自定义视觉对象环境配置
开发文档地址:https://docs.microsoft.com/zh-cn/power-bi/service-custom-visuals-getting-started-with-develop ...
- DPaRL:耶鲁+AWS出品,开放世界持续学习场景的新解法 | ECCV'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Open-World Dynamic Prompt and Continual Visual Representation Learning ...