简单介绍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进阶——什么是上下文管理器?

    在 Python 开发中,我们经常会使用到 with 语法块,例如在读写文件时,保证文件描述符的正确关闭,避免资源泄露问题. 你有没有思考过, with 背后是如何实现的?我们常常听到的上下文管理器究 ...

  2. .Net Core的简单单元测试基于Mock和自定义

    首先创建 使用mock 外部依赖一般用Mock 模拟 下载包 例如 3.1:首先先要使用MOCk来模拟测试方法需要的参数,这一步为 Arrange; 简单的模拟 var mock = new Mock ...

  3. String 和 StringBuffer,StringBuilder 的区别

    String 和 StringBuffer,StringBuilder 的区别 String 是 " 字符串常量" , 对象一旦创建就不可改变,这就导致如果字符串常量池中没有所需对 ...

  4. [leetcode]242. Valid Anagram判断两个字符串是不是包含相同字符的重排列

    /* 思路是判断26个字符在两个字符串中出现的次数是不是都一样,如果一样就返回true. 记住这个方法 */ if (s.length()!=t.length()) return false; int ...

  5. Linux嵌入式学习-交叉编译mplayer

    http://bbs.gkong.com/archive.aspx?ID=286721

  6. python在线练习

    不管学习那门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自 ...

  7. 添加/删除/读写c盘文件——c#

    一.前言: 有时候我们为自己的程序添加配置文件,如tet.ini.xml等文件,又或者保存软件运行时的日志 当我们把软件打包后,默认安装在c盘,而配置文件也会跟随生成在安装目录下 此时你会发现,配置文 ...

  8. JDK动态代理案例与原理分析

    一.JDK动态代理实现案例 Person接口 package com.zhoucong.proxy.jdk; public interface Person { // 寻找真爱 void findlo ...

  9. 4.5万字手把手教你实现MySQL TB级数据存储!!

    写在前面 业界对系统的高可用有着基本的要求,简单的说,这些要求可以总结为如下所示. 系统架构中不存在单点问题. 可以最大限度的保障服务的可用性. 一般情况下系统的高可用可以用几个9来评估.所谓的几个9 ...

  10. Cocos Creator 新资源管理系统剖析

    目录 1.资源与构建 1.1 creator资源文件基础 1.2 资源构建 1.2.1 图片.图集.自动图集 1.2.2 Prefab与场景 1.2.3 资源文件合并规则 2. 理解与使用 Asset ...