API文档自动生成,Swagger的配置
ASP.NET的部署方式
第一步:引用程序集
打开NuGet程序包管理器,搜索Swagger,安装第一个,注意画圈的地方,
已经包含主程序和UI了,安装完成后会在根目录App_Start文件夹下生成SwaggerConfig.cs。

第二步:配置信息
打开SwaggerConfig.cs,按照如下配置即可,注意命名空间。
using System.Web.Http;
using WebActivatorEx;
using DemoAPI;
using Swashbuckle.Application;
using Swashbuckle.Swagger;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Xml;
using System.IO; [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")] namespace DemoAPI
{
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly; GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "DemoAPI");
c.IncludeXmlComments(System.AppDomain.CurrentDomain.BaseDirectory + "/bin/DemoAPI.XML");
c.CustomProvider((defaultProvider) => new CachingSwaggerProvider(defaultProvider));
})
.EnableSwaggerUi(c =>
{
//路径规则:项目命名空间.文件夹名称.js文件名称
c.InjectJavaScript(thisAssembly, "DemoAPI.Scripts.swagger.js");
});
}
} public class CachingSwaggerProvider : ISwaggerProvider
{
private static ConcurrentDictionary<string, SwaggerDocument> _cache =
new ConcurrentDictionary<string, SwaggerDocument>(); private readonly ISwaggerProvider _swaggerProvider; public CachingSwaggerProvider(ISwaggerProvider swaggerProvider)
{
_swaggerProvider = swaggerProvider;
} public SwaggerDocument GetSwagger(string rootUrl, string apiVersion)
{
var cacheKey = string.Format("{0}_{1}", rootUrl, apiVersion);
SwaggerDocument srcDoc = null;
//只读取一次
if (!_cache.TryGetValue(cacheKey, out srcDoc))
{
srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion); srcDoc.vendorExtensions = new Dictionary<string, object> { { "ControllerDesc", GetControllerDesc() } };
_cache.TryAdd(cacheKey, srcDoc);
}
return srcDoc;
} /// <summary>
/// 从API文档中读取控制器描述
/// </summary>
/// <returns>所有控制器描述</returns>
public static ConcurrentDictionary<string, string> GetControllerDesc()
{
string xmlpath = string.Format("{0}/bin/DemoAPI.XML", System.AppDomain.CurrentDomain.BaseDirectory);
ConcurrentDictionary<string, string> dic = new ConcurrentDictionary<string, string>();
if (!File.Exists(xmlpath))
{
return dic;
}
XmlDocument doc = new XmlDocument();
doc.Load(xmlpath);
XmlNodeList list = doc.SelectNodes("//member[contains(@name,'T:')]");
foreach (XmlNode item in list)
{
string val = item.Attributes["name"].Value;
string key = val.Substring(val.LastIndexOf('.') + ).Replace("Controller", "");
XmlNode node = item.FirstChild;
if (!dic.ContainsKey(key))
{
dic.TryAdd(key, node.InnerText.Trim());
}
}
return dic;
} }
}
第三步:输出XML文件
右键项目的属性,生成,勾选

第四步:显示控制器备注
第二步中的,EnableSwaggerUi()配置的swagger.js代码如下
$(function () {
var init = function () {
$.getJSON($("#input_baseUrl").val(), {}, function (res) {
$("#resources_container .resource").each(function (i, item) {
var _id = $(item).attr("id");
if (!_id) { return; }
var strSummary = res.ControllerDesc[_id.substring(9)];
if (strSummary)
{
$(item).children(".heading").children(".options").prepend('<li style="color:#000">' + strSummary + '</li>');
}
});
});
};
init();
});
自己加的作用于swagger的资源文件(如js、css等文件),
需要设置,否则会报错;选中文件,右键属性,生成操作改为嵌入的资源。

访问地址为 域名或 ip:port/swagger/ui/index,界面如下:

想要显示action,就要在action上面打上特性标签:

或者修改WebApiConfig.cs中routeTemplate选项的值:

汉化就不需要了,备注是中文就行,也没几个单词。
=============================================================================
ASP.NET Core的部署方式
出自:https://github.com/domaindrivendev/Swashbuckle.AspNetCore
第一步:NuGet中搜索“Swashbuckle.AspNetCore”。

第二步:Startup.cs的配置。
1.引入命名空间“using Swashbuckle.AspNetCore.Swagger;”
2.ConfigureServices方法中加入:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});
3.Configure方法中加入:
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
生成重启,访问地址为 域名或 ip:port/swagger/index.html
API文档自动生成,Swagger的配置的更多相关文章
- Api文档自动生成工具
java开发,根据代码自动生成api接口文档工具,支持RESTful风格,今天我们来学一下api-doc的生成 作者:互联网编程. 欢迎投稿,一起交流技术 https://www.jianshu.co ...
- 使用swagger实现在线api文档自动生成 在线测试api接口
使用vs nuget包管理工具搜索Swashbuckle 然后安装便可 注释依赖于vs生成的xml注释文件
- springboot成神之——swagger文档自动生成工具
本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...
- VS文档自动生成
VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...
- Word 2010文档自动生成目录和某页插入页码
一.Word 2010文档自动生成目录 关于Word文档自动生成目录一直是我身边同学们最为难的地方,尤其是毕业论文,经常因为目录问题,被要求修改,而且每次修改完正文后,目录的内容和页码可能都会发生变化 ...
- django接口文档自动生成
django-rest_framework接口文档自动生成 只针对用到序列化和返序列化 一般还是用第三方yipi 一.安装依赖 pip3 install coreapi 二.设置 setting.py ...
- swagger:API在线文档自动生成框架
传统的API从开发测试开始我们经常借用类似Postman.fiddle等等去做接口测试等等工具:Swagger 为API的在线测试.在线文档提供了一个新的简便的解决方案: NET 使用Swagger ...
- 如何让接口文档自动生成,SpringBoot中Swagger的使用
目录 一.在SpringBoot项目中配置Swagger2 1.pom.xml中对Swagger2的依赖 2.编写配置类启用Swagger 3.配置实体类的文档 4.配置接口的文档 5.访问文档 二. ...
- API的文档自动生成——基于CDIF的SOA基本能力
当前,作为大部分移动app和云服务后台之间的标准连接方式,REST API已经得到了绝大部分开发者的认可和广泛的应用.近年来,在新兴API经济模式逐渐兴起,许多厂商纷纷将自己的后台业务能力作为REST ...
随机推荐
- [微信跳转浏览器]微信跳转外部浏览器下载APP源码,可以实现自动跳转外部浏览器打开链接
基于微信后端开发了一款微信推广助手,使用了本程序生成的链接,用户在微信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页. 我们开发的此款跳转产品,应用范围广泛.除了下载A ...
- .NET Core + docker入门
下载安装docker docker客户端,今天vpn小水管实在是受不了,于是找了国内的下载地址 配置docker加速器 参考博文Docker for windows10 配置阿里云镜像 docker入 ...
- linux中inode的理解
一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...
- WebGPU学习(十一):学习两个优化:“reuse render command buffer”和“dynamic uniform buffer offset”
大家好,本文介绍了"reuse render command buffer"和"dynamic uniform buffer offset"这两个优化,以及Ch ...
- SQLServer数据库之SqlServer查看表、存储过程、耗时查询、当前进程、开销较大的语句
--查看数据库中表的语句 SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle , ( , ( ( THEN ( LEN(CONV ...
- 记录安装Python第三方包“tesserocr”的方法和遇到的坑
1. 环境: 系统环境:Win7 32 位系统 Python版本: 3.6.5 虚拟环境为:Miniconda3 2. 共需要安装的模块: a. tesserocr b. tessera ...
- java引用类型的浅拷贝与深拷贝理解
1.浅拷贝 只会复制地址值,也就是同一个对象两个引用,只是复制了一个引用而已. 2.深拷贝 重新在堆里创建一个新对象给新引用,连同地址值也不一样. 首先要知道Object的clone()方法, pub ...
- Mac常用的软件推荐
Alfred 效率软件,让能更快的启动各种软件 VScode 编辑器,市面上最热的编辑器,好用的不只是一点点,加上Vim插件简直就是秒杀市面上各种IDE PicGo 一个开源图床软件,支持各大网站的图 ...
- 使用rapidjson把文本json数据解析到树状结构
一个递归搞定 无聊的时候练练手就写了一个 头文件什么的我就不贴了 demo程序是MFC写的 void ParseObject(rapidjson::Value dc, CTreeCtrl * pTre ...
- web前端安全——常见的web攻击方法
面试题:你所了解的web攻击? 1.xss攻击 2.CSRF攻击 3.网络劫持攻击 4.控制台注入代码 5.钓鱼 6.DDoS攻击 7.SQL注入攻击 8.点击劫持 一.xss攻击 XSS攻击:跨站脚 ...