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的配置的更多相关文章

  1. Api文档自动生成工具

    java开发,根据代码自动生成api接口文档工具,支持RESTful风格,今天我们来学一下api-doc的生成 作者:互联网编程. 欢迎投稿,一起交流技术 https://www.jianshu.co ...

  2. 使用swagger实现在线api文档自动生成 在线测试api接口

    使用vs nuget包管理工具搜索Swashbuckle 然后安装便可 注释依赖于vs生成的xml注释文件

  3. springboot成神之——swagger文档自动生成工具

    本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...

  4. VS文档自动生成

    VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...

  5. Word 2010文档自动生成目录和某页插入页码

    一.Word 2010文档自动生成目录 关于Word文档自动生成目录一直是我身边同学们最为难的地方,尤其是毕业论文,经常因为目录问题,被要求修改,而且每次修改完正文后,目录的内容和页码可能都会发生变化 ...

  6. django接口文档自动生成

    django-rest_framework接口文档自动生成 只针对用到序列化和返序列化 一般还是用第三方yipi 一.安装依赖 pip3 install coreapi 二.设置 setting.py ...

  7. swagger:API在线文档自动生成框架

    传统的API从开发测试开始我们经常借用类似Postman.fiddle等等去做接口测试等等工具:Swagger 为API的在线测试.在线文档提供了一个新的简便的解决方案: NET 使用Swagger ...

  8. 如何让接口文档自动生成,SpringBoot中Swagger的使用

    目录 一.在SpringBoot项目中配置Swagger2 1.pom.xml中对Swagger2的依赖 2.编写配置类启用Swagger 3.配置实体类的文档 4.配置接口的文档 5.访问文档 二. ...

  9. API的文档自动生成——基于CDIF的SOA基本能力

    当前,作为大部分移动app和云服务后台之间的标准连接方式,REST API已经得到了绝大部分开发者的认可和广泛的应用.近年来,在新兴API经济模式逐渐兴起,许多厂商纷纷将自己的后台业务能力作为REST ...

随机推荐

  1. MBean 描述符

    简介 Tomcat 使用 JMX MBean 来实现自身的性能管理. 每个包里的 mbeans-descriptor.xml 是针对 Catalina 的 JMX MBean 描述. 为了避免出现 “ ...

  2. python基础[18]——使用django创建一个简易的博客网站

    一.页面实现 index.html base.html post.html header.html footer.html <!-- index.html--> {% extends 'b ...

  3. easyUI dataGrid主从表点击展开问题

    昨天在公司写代码遇到了一个问题,就是在用easyUI做主从表的时候在查询之后点击展开的时候不能再次展开了.先说一下主从表我也是第一次用 效果如下图: 然后点击前面的小加号出现以下效果: 然而遇到了一个 ...

  4. Git是什么?

    Git是什么? Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控 ...

  5. 看完知乎上500条答案,我为大家整理了这21个B站学习类UP主

    原文之前发在我的知乎,转载请注明出处. ​ 虽然,今天算法文章还没更新┏(゜ロ゜;)┛,但还是溜过来跑个题~ 之前看到了博客上有小伙伴在分享自己的B站资源,才突然意识到自己其实也积攒了很多优秀UP的资 ...

  6. rapidxml遍历子节点例子

    <?xml version="1.0" encoding="utf-8"?> <luaword> <btn> <inf ...

  7. 【题解】BZOJ1034 [ZJOI2008]泡泡堂BNB(贪心)

    [题解]BZOJ1034 [ZJOI2008]泡泡堂BNB(贪心) 考虑直接模拟田忌赛马... 我的最小比你的大,直接上 我的最大比你的大,直接上 otherwise,我小换你大 考虑最劣,由于每次比 ...

  8. 大数据(5)---分布式任务资源调度Yarn

    前面也说到过的Yarn是hadoop体系中的资源调度平台.所以在整个hadoop的包里面自然也是有它的.这里我们就简单介绍下,并配置搭建yarn集群. 首先来说Yarn中有两大核心角色Resource ...

  9. 从桌面到 Web -- 领域模型

    让我们暂时告别一下 ASP.NET Core 先介绍一下这个虚拟项目.因为我的主要目的是通过一个项目,全面学习一下 ASP.NET Core,所以这个项目时一个很简单的,不具备实际应用价值的虚拟项目, ...

  10. Appium环境搭建超详细教程

    前言: 本系列教程会从软件的基本安装开始,最终目的是通过完成几个案例后, 大家实现自由抓取App中想要的资源. 本系列以后会更的: Appium基本使用及控制真机及安卓模拟器 Mitmproxy抓包工 ...