Swagger UI in AspNetCore WebAPI

Swagger其实包含了三个部分,分别是Swagger Editor文档接口编辑器,根据接口文档生成code的Swagger Codegen,以及生成在线文档的Swagger UI。
在AspNetCore中通常使用Microsoft封装的Swashbuckle来使用Swagger UI,这是一个AspNetCore的中间件。和其他中间件一样都是分为register和use两个部分。

Installation



VS中很简单,直接用NuGet安装Swashbuckle.AspNetCore即可。

或者使用命令行: dotnet add package --version xxx Swashbuckle.AspNetCore

Register



所有Swagger UI注册的configue相关的内容都放在AddSwaggerGen这个方法里面:

namespace Microsoft.Extensions.DependencyInjection
{
    public static class SwaggerGenServiceCollectionExtensions
    {
        public static IServiceCollection AddSwaggerGen(this IServiceCollection services, Action<SwaggerGenOptions> setupAction = null);
        public static void ConfigureSwaggerGen(this IServiceCollection services, Action<SwaggerGenOptions> setupAction);
    }
}

AddSwaggerGen这个方法主要用户注册中间件的时候添加一些参数,其中重要的有:
SwaggerDoc:添加一个swagger document,主要用户存储生成出来的OpenAPI文档。以及一些文档基本信息,如:作者、描述、license等。
XXXFilter:自定义filter,XXX为Swagger中的对象,当XXX创建完成后,filter可以定义操作对XXX进行处理。
AddSecurityDefinitionAddSecurityRequirement:用于给Swagger添加验证的部分。
IncludeXmlComments:为OpenAPI提供注释内容的xml,需要在IDE里面配置生成对应的XML文件。(当vs中使用生成xml文档文件这个功能的时候,如果有方法没有添加注释,vs会有提示,如果要避免这个提示,可以在下图中的Suppress warnings中把1591禁掉。)

Use

RouteTemplate:UseSwagger中配置Swagger页面路由信息。
RoutePrefix:类似SharePoint中的host name,默认为swagger,如果不需要可以设置为“”。
SwaggerEndpoint:OpenAPI文件的访问URL,这个url和RouteTemplate以及SwaggerDoc的name一定要一致,不然就会有page not found的错。
当请求OpenAPI文件的时候,会从SwaggerEndpoint配置的url中配合RouteTemplate一起解析document的name。
下面是RouteTemplate的配置:

1 app.UseSwagger(option =>
2 {
3   option.RouteTemplate = string.Format("{0}/{1}", prefix, "{documentName}/swagger.json");
4 });

解析document name的过程。

 1 private bool RequestingSwaggerDocument(HttpRequest request, out string documentName)
 2 {
 3   documentName = null;
 4   if (request.Method != "GET") return false;
 5
 6   var routeValues = new RouteValueDictionary();
 7   if (!_requestMatcher.TryMatch(request.Path, routeValues) || !routeValues.ContainsKey("documentName")) return false;
 8
 9   documentName = routeValues["documentName"].ToString();
10   return true;
11 }

原文地址:https://www.cnblogs.com/hellpoet/p/11888259.html

时间: 2024-10-07 12:42:59

Swagger UI in AspNetCore WebAPI的相关文章

使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件

作者:Sreekanth Mothukuru 2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 API 用户提供丰富的探索.文件和操作体验. 源代码: 下载 SwaggerUi_2.zip 步骤 在本文中,我们将在 Asp.Net 创建一个简单的 Restful API,并整合 Swashbuckle 和 Swagger UI.本文分为三部分. 创建 Asp.Net Web API项目 通过实体数

Swagger UI教程 API 文档神器 搭配Node使用 web api 接口文档 mvc接口文档

两种方案 一.Swagger 配置 web Api 接口文档美化 二.通过NodeJS 发布Swagger UI 配置api 文档 先说一下简单的 Swagger 配置 web Api  Swagger-UI本身只提供在线测试功能,要集成它还需要告诉它本项目提供的各种服务和参数信息.这里就需要一些工作量了,不过好在许多第三方库已经给我们完成了这一工作.我这里用的是Swashbuckle,使用它也比较简单,直接使用Nuget添加其程序包即可: 1.初始化包  PM> Install-Package

RESTful Web API Help Documentation using Swagger UI and Swashbuckle

Sign in home articles Chapters and Sections> Search Latest Articles Latest Tips/Tricks Top Articles Beginner Articles Technical Blogs Posting/Update Guidelines Article Help Forum Article Competition  Submit an article or tip  Post your Blog quick ans

gRPC helloworld service, RESTful JSON API gateway and swagger UI

概述 本篇博文完整讲述了如果通过 protocol buffers 定义并启动一个 gRPC 服务,然后在 gRPC 服务上提供一个 RESTful JSON API 的反向代理 gateway,最后通过 swagger ui 来提供 RESTful JSON API 的说明,完整代码 helloworld_restful_swagger. Helloworld gRPC Service 参考 gRPC Quick Start for Python. Install gRPC 安装 gRPC 运

Swagger UI教程 API 文档神器 搭配Node使用

ASP.NET Web API 使用Swagger生成在线帮助测试文档 Swagger 生成 ASP.NET Web API 前言 swagger ui是一个API在线文档生成和测试的利器,目前发现最好用的. 为什么好用?Demo 传送门 支持API自动生成同步的在线文档 这些文档可用于项目内部API审核 方便测试人员了解API 这些文档可作为客户产品文档的一部分进行发布 支持API规范生成代码,生成的客户端和服务器端骨架代码可以加速开发和测试速度 总结一句话就是好用,逼格高.下面我将总结一下如

swagger ui js 错误:Failed to execute &#39;serializeToString&#39; on &#39;XMLSerializer&#39;: parameter 1 is not of type &#39;Node&#39;.

经过排查,引发此错误的原因是,表中有一个字段名称为"NodeName",应该是在前台xml解析时引发冲突所致.我的解决办法是: 修改列名,修改映射. 如下: [Column("NodeName")] public string Name { get; set; } ps:说下我的思路,前台错误处打上断点,循环跳出(或者F8),注意观察出错时的节点名,见下图: 根据此法快速定位到解析错误的表名,然后根据排除法,一个一个注释掉字段,找到出错的字段.剩下的就好办了. sw

Swagger UI 及Swashbuckle

一.概念: 由Swagger网站可知,Swagger是展示RESTful API的简单而强大的方法,它为此API提供了强大的接口. 由Swashbuckle GitHub可知,Swashbuckle可将Swagger无缝添加到WebApi中!将ApiExplorer与Swagger/swagge-ui 合并可以给 API 用户带来丰富的探索.文件和操作体验.除Swagger生成器外,Swashbuckle还包含嵌入式版本的swagger-ui. 二.使用 1.使用包命令添加到项目 install

ASP.NET Zero--基于令牌的认证&amp;SWAGGER UI

基于令牌的认证 任何应用程序都可以将应用程序中的任何功能认证和使用为API.例如,您可以创建一个移动应用程序消耗相同的API.在本节中,我们将演示来自Postman的API (Google Chrome扩展程序)的用法. 认证 我们建议您禁用用于远程身份验证的用户的双因素身份验证.否则,客户端应该实现两个因素认证流程.我们假设您已经 为默认租户的管理员用户禁用了双因素身份验证,因为我们将在此示例中使用它. 应为所有请求配置以下标题(Abp.TenantId为默认租户的Id),单个租户应用程序不需

Authorize requests in Swagger UI

Authorize requests in Swagger UI 前面的文章讲到了Swagger+ASP.NET Core的使用,这里讲怎么把授权认证加入Swagger中. 国外的一篇文章:https://ppolyzos.com/2017/10/30/add-jwt-bearer-authorization-to-swagger-and-asp-net-core/ app.UseSwaggerUi3(typeof(Startup).GetTypeInfo().Assembly, setting