Swagger-UI展示接口
简单介绍API的管理工具Swagger的UI模块。
简介:swagger ui就是一个能整合到项目中让api的注释能够生成到一个网页上。能简单测试和给前端看。
第一步:添加引用
打开NuGet程序包管理器,搜索Swagger。安装搜索出来的这个Swashbuckle。

第二步:修改配置文件
安装完成后会在根目录App_Start文件夹下生成SwaggerConfig.cs。
打开此文件,按照西面配置即可,注意命名空间。
1 using System.Web.Http;
2 using WebActivatorEx;
3 using WebApplication1;
4 using Swashbuckle.Application;
5 using Swashbuckle.Swagger;
6 using System.Collections.Concurrent;
7 using System.Collections.Generic;
8 using System.IO;
9 using System.Xml;
10
11 [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
12
13 namespace WebApplication1
14 {
15 public class SwaggerConfig
16 {
17 public static void Register()
18 {
19 var thisAssembly = typeof(SwaggerConfig).Assembly;
20
21 GlobalConfiguration.Configuration
22 .EnableSwagger(c =>
23 {
24 c.SingleApiVersion("v1", "WebApplication1");
25 c.IncludeXmlComments(System.AppDomain.CurrentDomain.BaseDirectory + "/bin/WebApplication1.XML");
26 c.CustomProvider((defaultProvider) => new CachingSwaggerProvider(defaultProvider));
27 })
28 .EnableSwaggerUi(c =>
29 {
30 c.InjectJavaScript(thisAssembly, "WebApplication1.Scripts.swagger.js");
31 });
32 }
33 }
34 public class CachingSwaggerProvider : ISwaggerProvider
35 {
36 private static ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>();
37
38 private readonly ISwaggerProvider _swaggerProvider;
39
40 public CachingSwaggerProvider(ISwaggerProvider swaggerProvider)
41 {
42 _swaggerProvider = swaggerProvider;
43 }
44
45 public SwaggerDocument GetSwagger(string rootUrl, string apiVersion)
46 {
47 var cacheKey = string.Format("{0}_{1}", rootUrl, apiVersion);
48 SwaggerDocument srcDoc = null;
49 if (!_cache.TryGetValue(cacheKey, out srcDoc))
50 {
51 srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion);
52
53 srcDoc.vendorExtensions = new Dictionary<string, object> { { "ControllerDesc", GetControllerDesc() } };
54 _cache.TryAdd(cacheKey, srcDoc);
55 }
56 return srcDoc;
57 }
58
59 /// <summary>
60 /// 从API文档中读取控制器描述
61 /// </summary>
62 /// <returns>所有控制器描述</returns>
63 public static ConcurrentDictionary<string, string> GetControllerDesc()
64 {
65 string xmlpath = string.Format("{0}/bin/WebApplication1.XML", System.AppDomain.CurrentDomain.BaseDirectory);
66 ConcurrentDictionary<string, string> dic = new ConcurrentDictionary<string, string>();
67 if (!File.Exists(xmlpath))
68 {
69 return dic;
70 }
71 XmlDocument doc = new XmlDocument();
72 doc.Load(xmlpath);
73 XmlNodeList list = doc.SelectNodes("//member[contains(@name,'T:')]");
74 foreach (XmlNode item in list)
75 {
76 string val = item.Attributes["name"].Value;
77 string key = val.Substring(val.LastIndexOf('.') + 1).Replace("Controller", "");
78 XmlNode node = item.FirstChild;
79 if (!dic.ContainsKey(key))
80 {
81 dic.TryAdd(key, node.InnerText.Trim());
82 }
83 }
84 return dic;
85 }
86 }
87 }
第三步:修改项目的输出XML文件
右键项目的属性,生成,勾选

第四步:显示控制器的别称
需要自己创建第二步中需要的swagger.js文件。在项目的Scripts文件夹中添加名为swagger.js文件。内容如下:
1 $(function () {
2 var init = function () {
3 $.getJSON($("#input_baseUrl").val(), {}, function (res) {
4 $("#resources_container .resource").each(function (i, item) {
5 var _id = $(item).attr("id");
6 if (!_id) { return; }
7 var strSummary = res.ControllerDesc[_id.substring(9)];
8 if (strSummary) {
9 $(item).children(".heading").children(".options").prepend('<li style="color:#000">' + strSummary + '</li>');
10 }
11 });
12 });
13 };
14 init();
15 });
第五步:添加方法得特性标签
1 [HttpGet]
2 [Route("api/values/GetMyName/id")]
3 public string GetMyName(int id)
4 {
5 return "value";
6 }
到这里所有步骤全部完成,接下来我们只需要运行项目。然后在地址栏中加上/swagger/ui/index.
http://localhost:port/swagger/ui/index
最后界面如下:

然后我们试一下是否成功。
点开这个方法界面如下,输入参数,点击try it out. 我们会得到接口返回的“value”字符串。测试配置成功!

Swagger-UI展示接口的更多相关文章
- sprinvmvc整合swagger实现实时接口信息展示
1.pom.xml引入swagger插件 <dependency> <groupId>io.springfox</groupId> <artifactId&g ...
- .Net WebApi接口之Swagger UI 隐藏指定接口类或方法
swagger的一个最大的优点是能实时同步api与文档,但有些时候我们不想全部公开接口,而要隐藏或屏蔽一些接口类或方法,swagger也是支持的,只需要设置一下DocumentFilter方法. 第一 ...
- TP框架整合Swagger UI接口文档
1.下载swagger ui:http://swagger.io/swagger-ui/: 2.在应用目录里新建一个目录xxx:如图 3.解压后把dist目录的所有文件拷贝到新建的目录里面: 4.在新 ...
- WebApi使用swagger ui自动生成接口文档
之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...
- 使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件
作者:Sreekanth Mothukuru 2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 AP ...
- Swagger: 一个restful接口文档在线生成+功能测试软件
一.什么是 Swagger? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 ...
- 使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件(转)
作者:Sreekanth Mothukuru2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 API ...
- 特别好用的swagger ui 封装
Swagger简单介绍 Swagger是一个Restful风格接口的文档在线自动生成和测试的框架 官网:http://swagger.io 官方描述:The World’s Most Popular ...
- Flask 系列之 构建 Swagger UI 风格的 WebAPI
说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验 环境初始化 # 创建项目目录 mkdir helloworl ...
- dotnet core swagger filter 隐藏接口和显示枚举描述
dotnet core 2.2开发项目中,常会使用Swagger UI来生成在线Api文档. 某些接口不想放到Swagger中可以这样写Filter: /// <summary> /// ...
随机推荐
- ASP.NET Core 3.1使用JWT认证Token授权 以及刷新Token
传统Session所暴露的问题 Session: 用户每次在计算机身份认证之后,在服务器内存中会存放一个session,在客户端会保存一个cookie,以便在下次用户请求时进行身份核验.但是这样就暴露 ...
- setTimeout 是到了xx ms 就执行吗,了解浏览器的 Event-Loop 机制
要想 JavaScript 玩得溜,还得了解波 JavaScript 执行机制/(ㄒoㄒ)/~~. 个人博客:https://shansan.top 前言 最近看了波 JavaScript 相关的文章 ...
- 机器学习 第4篇:数据预处理(sklearn 插补缺失值)
由于各种原因,现实世界中的许多数据集都包含缺失值,通常把缺失值编码为空白,NaN或其他占位符.但是,此类数据集与scikit-learn估计器不兼容,这是因为scikit-learn的估计器假定数组中 ...
- 支付业务优化else if 代码
背景 最近在做项目的时候,需要接入支付.由于接入第三方支付而且还不知止一家,需要接入很多家.比如说支付宝.微信.富友支付等.每家支付都一个回调.现如今的代码,根据不同的第三方支付一大堆else if判 ...
- eclipse下如何查看Android源码
1.查看安卓源代码: (1)首先要先下载安装源代码,网上有很多地方都可以下,百度"安卓源代码下载就行了",这里要注意版本,比如我这里用的是4.0.3的版本,对应的是android- ...
- Mono for android,Xamarin点击事件的多种写法
(一)原本java的写法(相信很多是学过java的): 需要实现接口View.IOnClickListener,最好也继承类:Activity,因为View.IOnClickListener接口又继承 ...
- Qt类库介绍
QT类库 QT核心特点 QT是一个跨平台开发的类库. QT的元对象编译器MOC是一个预处理器,在源程序被编译前先将这些QT特性的程序转为标准的C++兼容的形式,然后再有标准的C++编译器进行编译.也就 ...
- es6 Array.from + new Set 去重复
// es6 set数据结构 生成一个数据集 里面的元素是唯一的 const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]); // items 是个对象 item ...
- 在Linux系统下限制指定目录的大小以及文件/文件夹数量
背景说明 在Linux操作系统下有时需要限制一个指定文件夹的大小和文件夹内可存储的文件数量,有可能是出于安全的考量或者定制化的配置,这里我们提供了一种方案:用dd创建一个空的img镜像,进行格式化的配 ...
- (二)数据源处理6-excel数据转换实战(下)
将结果的所有数据整理如下: {'api_case_01': [{'测试用例编号': 'api_case_01', '测试用例名称': '获取access_token接口测试', '用例执行': '是' ...