Swagger接口文档工具
概述
OpenApi概述
OpenAPI 规范(以前称为 Swagger 规范)是 REST API 的 API 描述格式。 OpenAPI 文件允许您描述整个 API,包括:
可用端点 ( /users ) 以及每个端点上的操作 ( GET /users , POST /users )
操作参数 每个操作的输入和输出
认证方式
联系信息、许可证、使用条款和其他信息。
API规范可以用YAML或JSON编写。该格式对于人类和机器来说都很容易学习和阅读。完整的 OpenAPI 规范可以在 GitHub 上找到: OpenAPI 3.0 规范
Swagger概述
Swagger是一组围绕 OpenAPI 规范构建的开源工具,可以帮助您设计、构建、记录和使用 REST API。主要的 Swagger 工具包括:
Swagger Editor – 基于浏览器的编辑器,您可以在其中编写 OpenAPI 定义。
Swagger UI – 将 OpenAPI 定义呈现为交互式文档。
Swagger Codegen – 根据 OpenAPI 定义生成服务器存根和客户端库。
Swagg ...
SignalR构建实时应用
概述
ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。
适合SignalR的候选项:
需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖、地图和 GPS 应用。
仪表板和监视应用。 示例包括公司仪表板、即时销售更新或旅行警报。
协作应用。 协作应用的示例包括白板应用和团队会议软件。
需要通知的应用。 社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需使用通知。
SignalR 提供用于创建服务器到客户端远程过程调用 (RPC) 的 API。 RPC 从服务器端 .NET Core 代码调用客户端上的函数。 提供多个受支持的平台,其中每个平台都有各自的客户端 SDK。 因此,RPC 调用所调用的编程语言有所不同。
以下是 ASP.NET Core SignalR 的一些功能:
自动处理连接管理。
同时向所有连接的客户端发送消息。 例如聊天室。
向特定客户端或客户端组发送消息。
对其进行缩放,以处理不断增加的流量。
SignalR ...
13静态文件
默认情况下,静态文件(如 HTML、CSS、图像和 JavaScript)是 ASP.NET Core 应用直接提供给客户端的资产。
提供静态文件
静态文件存储在项目的 Web 根目录中。 默认目录为 {content root}/wwwroot,但可通过 UseWebRoot 方法更改目录。
采用 CreateBuilder 方法可将内容根目录设置为当前目录:
12345678910111213141516171819202122var builder = WebApplication.CreateBuilder(args);builder.Services.AddRazorPages();builder.Services.AddControllersWithViews();var app = builder.Build();if (!app.Environment.IsDevelopment()){ app.UseExceptionHandler("/Error"); app.UseHsts();}app.UseHtt ...
12发出HTTP请求
可以注册 IHttpClientFactory 并将其用于配置和创建应用中的 HttpClient 实例。 IHttpClientFactory 的优势如下:
提供一个中心位置,用于命名和配置逻辑 HttpClient 实例。 例如,可注册和配置名为 github 的客户端,使其访问 GitHub。 可以注册一个默认客户端用于一般性访问。
通过 HttpClient 中的委托处理程序来编码出站中间件的概念。 提供基于 Polly 的中间件的扩展,以利用 HttpClient 中的委托处理程序。
管理基础 HttpClientMessageHandler 实例的池和生存期。 自动管理可避免手动管理 HttpClient 生存期时出现的常见 DNS(域名系统)问题。
(通过 ILogger)添加可配置的记录体验,以处理工厂创建的客户端发送的所有请求。
消耗模式
在应用中可以通过以下多种方式使用 IHttpClientFactory:
基本用法
命名客户端
类型化客户端
生成的客户端
基本用法
通过在 Program.cs 中调用 AddHttpClient 来注册 IH ...
11异常处理
开发人员异常页
“开发人员异常”页显示未经处理的请求异常的详细信息。 ASP.NET Core 应用在以下情况下默认启用开发人员异常页:
在开发环境中运行
使用当前模板创建的应用,即使用WebApplication.CreateBuilder。使用WebHost.CreateDefaultBuilder创建的应用必须通过在Configure中调用app.UseDeveloperExceptionPage来启用开发人员异常页。
开发人员异常页运行在中间件管道的前面部分,以便它能够捕获随后中间件中抛出的未经处理的异常。
开发人员异常页可能包含关于异常和请求的以下信息:
堆栈跟踪
查询字符串参数(如果有)
Cookie(如果有)
标头
异常处理程序页
若要为生产环境配置自定义错误处理页,请调用UseExceptionHandler.此异常处理中间件:
捕获并记录未经处理的异常
使用指示的路径在备用管道中重新执行请求。如果响应已启动,则不会重新执行请求。模板生成的代码使用**/Error**路径重新执行请求
如果备用管道引发了一个自身的异常,则异常处理中间件会重新引 ...
10路由
路由负责匹配传入的 HTTP 请求,然后将这些请求发送到应用的可执行终结点。 终结点是应用的可执行请求处理代码单元。 终结点在应用中进行定义,并在应用启动时进行配置。 终结点匹配过程可以从请求的 URL 中提取值,并为请求处理提供这些值。 通过使用应用中的终结点信息,路由还能生成映射到终结点的 URL。
应用可以使用以下内容配置路由:
Controller
Razor Pages
SignalR
gRPC
启用终结点的中间件,例如运行状况检查。
通过路由注册的委托和 Lambda。
路由基本知识
以下代码演示路由的基本示例:
123456var builder = WebApplication.CreateBuilder(args);var app = builder.Build();app.MapGet("/", () => "Hello World!");app.Run();
前面的示例包含使用 MapGet 方法的单个终结点:
当 HTTP GET 请求发送到根 URL / 时:
将执行请求委托。
Hello Wo ...
09HttpContext
HttpContext 封装了有关个别 HTTP 请求和响应的所有信息。 收到 HTTP 请求时,HttpContext 实例会进行初始化。 HttpContext 实例可通过中间件和应用框架(如 Web API 控制器、Razor Pages、SignalR、gRPC 等)访问。
HttpRequest
HttpContext.Request 提供对 HttpRequest 的访问。 HttpRequest 包含有关传入 HTTP 请求的信息,并在服务器收到 HTTP 请求时被初始化。 HttpRequest 不是只读的,中间件可以在中间件管道中更改请求值。
HttPRequest常用成员
properties
说明
示例
HttpRequest.Path
请求路径
/en/article/getstarted
HttpRequest.Method
请求方法
GET
HttpRequest.Headers
请求标头的集合
user-agent=Edge x-custom- header=MyValue
HttpRequest.RouteValues
...
08监视
运行状况检查
运行状况检查由应用程序作为 HTTP 终结点公开。 可以为各种实时监视方案配置运行状况检查终结点:
运行状况探测可以由容器业务流程协调程和负载均衡器用于检查应用的状态。 例如,容器业务流程协调程序可以通过停止滚动部署或重新启动容器来响应失败的运行状况检查。 负载均衡器可以通过将流量从失败的实例路由到正常实例,来应对不正常的应用。
可以监视内存、磁盘和其他物理服务器资源的使用情况来了解是否处于正常状态。
运行状况检查可以测试应用的依赖项(如数据库和外部服务终结点)以确认是否可用和正常工作。
运行状况检查通常与外部监视服务或容器业务流程协调程序一起用于检查应用的状态。 向应用添加运行状况检查之前,需确定要使用的监视系统。 监视系统决定了要创建的运行状况检查类型以及配置其终结点的方式。
基本运行状况探测
对于许多应用,报告应用在处理请求方面的可用性(运行情况)的基本运行状况探测配置足以发现应用的状态。
基本配置会注册运行状况检查服务,并调用运行状况检查中间件以通过运行状况响应在 URL 终结点处进行响应。 默认情况下,不会注册任何特定运行状况检查来测试任何特 ...
07日志
日志记录提供程序
日志记录提供程序存储日志,但显示日志的 Console 提供程序除外。 例如,Azure Application Insights 提供程序将日志存储在 Azure Application Insights 中。 可以启用多个提供程序。
默认 ASP.NET Core Web 应用模板调用 WebApplication.CreateBuilder,该操作将添加以下日志记录提供程序:
Console
Debug
EventSource
EventLog (仅限Windows)
下面的代码将重写由 WebApplication.CreateBuilder 添加的一组默认的日志记录提供程序:
LoggingConfigureLogging12345var builder = WebApplication.CreateBuilder(args);builder.Logging.ClearProviders();builder.Logging.AddConsole();123456var builder = WebApplication.CreateBuilde ...