简单介绍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展示接口的更多相关文章

  1. sprinvmvc整合swagger实现实时接口信息展示

    1.pom.xml引入swagger插件 <dependency> <groupId>io.springfox</groupId> <artifactId&g ...

  2. .Net WebApi接口之Swagger UI 隐藏指定接口类或方法

    swagger的一个最大的优点是能实时同步api与文档,但有些时候我们不想全部公开接口,而要隐藏或屏蔽一些接口类或方法,swagger也是支持的,只需要设置一下DocumentFilter方法. 第一 ...

  3. TP框架整合Swagger UI接口文档

    1.下载swagger ui:http://swagger.io/swagger-ui/: 2.在应用目录里新建一个目录xxx:如图 3.解压后把dist目录的所有文件拷贝到新建的目录里面: 4.在新 ...

  4. WebApi使用swagger ui自动生成接口文档

    之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...

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

    作者:Sreekanth Mothukuru 2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 AP ...

  6. Swagger: 一个restful接口文档在线生成+功能测试软件

    一.什么是 Swagger? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 ...

  7. 使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件(转)

    作者:Sreekanth Mothukuru2016年2月18日 本文旨在介绍如何使用常用的 Swagger 和 Swashbuckle 框架创建描述 Restful API 的交互界面,并为 API ...

  8. 特别好用的swagger ui 封装

    Swagger简单介绍 Swagger是一个Restful风格接口的文档在线自动生成和测试的框架 官网:http://swagger.io 官方描述:The World’s Most Popular ...

  9. Flask 系列之 构建 Swagger UI 风格的 WebAPI

    说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验 环境初始化 # 创建项目目录 mkdir helloworl ...

  10. dotnet core swagger filter 隐藏接口和显示枚举描述

    dotnet core 2.2开发项目中,常会使用Swagger UI来生成在线Api文档. 某些接口不想放到Swagger中可以这样写Filter: /// <summary> /// ...

随机推荐

  1. Python -- 修改、添加和删除元素

    大多数列表将是动态的,这意味着列表创建后,将随着程序的运行增删元素. 修改列表元素 修改列表元素的语法与访问列表元素的语法类似.要修改列表元素,可指定表名和要修改的元素指引,再指定该元素的新值. #代 ...

  2. 根据数据库反向生成PD

    原博文 http://www.360doc.com/content/14/0820/20/12385684_403420399.shtml 步骤 File___Reverse Engineer___D ...

  3. H3C路由器配置——动态路由RIP协议

    一.静态路由的不足 静态路由适用于:小规模的网络.架构不怎么调整的网络.没有环路的网络 二.RIP协议工作过程 2.1.工作特点 n路由信息协议RIP(Routing Information Prot ...

  4. [译] ConstraintLayout 可视化[Design]编辑器(这到底是什么)[第四部分]

    原文地址:Testing Views in Isolation with Espresso 原文作者:Ataul Munim 译文出自:掘金翻译计划 译者:yazhi1992 校对者:lovexiao ...

  5. SpringBoot+Vue 前后端合并部署

    前后端分离开发项目 前端vue项目 服务端springboot项目 如何将vue的静态资源整合到springboot项目里,通过启动jar包的方式部署服务. 前端项目执行npm run build 命 ...

  6. 【mysql】- Expalin篇

    简介 id:在一个大的查询语句中每个 SELECT 关键字都对应一个唯一的id 与查询优化器有关,假如被优化过,那么可能是上下两个的id都是一样的 select_type:SELECT 关键字对应的那 ...

  7. [leetcode]53Maximum Subarray动态规划经典题目:最大子串问题

    /** * Find the contiguous subarray within an array (containing at least one number) * which has the ...

  8. ESP32 BLE蓝牙 微信小程序通信发送大于20字符数据

    由于微信小程序只支持BLE每次发送数据不大于20个字节,ESP32则有经典蓝牙.低功耗蓝牙两种模式. 要解决发送数据大于20个字节的问题,最简单实用的方式就是分包发送.如下图所示: 1.什么起始字符和 ...

  9. LVS之3---健康检查

    LVS实现健康性检查功能 LVS高可用性 解决方案: 由Director对各RS健康状态进行检查,失败时禁用,成功时启用 keepalived heartbeat/corosync ldirector ...

  10. Atcoder abc187 F Close Group(动态规划)

    Atcoder abc187 F Close Group 题目 给出一张n个点,m条边的无向图,问删除任意数量的边后,留下来的最少数量的团的个数(\(n \le 18\) ) 题解 核心:枚举状态+动 ...