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> /// ...
随机推荐
- 5行Python代码就能实现刷爆全网的动态条形图!
说起动态图表,最火的莫过于动态条形图了. 在B站上搜索「数据可视化」这个关键词,可以看到很多与动态条形图相关的视频. 好多视频都达到了上百万的播放量,属实厉害. 目前网上实现动态条形图现成的工具也很多 ...
- Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.
1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...
- IIS放置的APP安装包在浏览器无法打开
无法打开的提示 操作步骤 1.将APP安装包放置到指定的文件夹中. 2.在IIS中MIME中添加MIME类型 扩展名:.apk MIME类型:application/vnd.android.pac ...
- vs2012新特性
VS2012的六大技术特点: 1.VS2012和VS2010相比,最大的新特性莫过于对Windows 8Metro开发的支持.Metro天生为云端而生,简洁.数字化.内容优于形式.强调交互的设计已经成 ...
- python初学者-水仙花数简单算法
输出"水仙花数".所谓水仙花是指一个3位数的十进制数,其各位数字的立方和等于该数本身.例如:153是水仙花数. 用for循环实现水仙花数的计算图如下所示: 1 for i in r ...
- java实体类和json串字段名称不一致或者与map中字段名称不一致使用注解转化
package yuanCheng; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List ...
- select * from 多张表的用法
select * from 多张表的用法 其实就是 inner join select * from Class c,Student s where c.ClassID=s.ClassID ...
- Linux腾讯云下安装mysql
百度云盘下载地址https://pan.baidu.com/s/1MqUEdeqZuQbq-veLuVItQQ 将下载好的mysql-5.7.14-linux-glibc2.5-x86_64.tar. ...
- Android开发用到的几种常用设计模式浅谈(一):组合模式
1:应用场景 Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类.组合模式 ...
- hive中一般取top n时,row_number(),rank,dense_ran()常用三个函数
一. 分区函数Partition By与row_number().rank().dense_rank()的用法(获取分组(分区)中前几条记录) 一.数据准备 --1.创建学生成绩表 id int, ...