C# Swagger 生成接口文档
一直听说Swagger是做Web API文档的好工具,这次手里暂时没什么事,类体验下它的强大之处。下面是使用Swashbuckle.net 给asp.net web API添加文档的简要步骤。
参考地址:http://www.jianshu.com/p/3329b4126886
项目引入Swagger
使用nuget加入Swashbuckle的引用
安装好以后,在App_Start目录下,会有一个SwaggerConfig.cs文件,SwaggerConfig类通过[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
启动时运行。
nuget添加完引用,无须任何配置,编译后,访问 http://localhost:52079/swagger(这里按照自己的项目启动端口更改) 即可看到所有API的文档说明。界面如图所示:
SwaggerConfig简单介绍
SwaggerConfig.cs文件会自动添加到项目的App_Start目录下,代码本身包含大量注释掉的代码,清除后,代码如下:
相关工程需要生成XML文档

在SwaggerConfig 的Register方法的EnableSwagger匿名函数中加上对应的XML文件,修改如下:
- public class SwaggerConfig
- {
- public static void Register()
- {
- var thisAssembly = typeof(SwaggerConfig).Assembly;
- //获取项目文件路径
- var baseDirectory = System.Web.HttpContext.Current.Server.MapPath("~/App_Data");
- var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
- var commentsFile = Path.Combine(baseDirectory, commentsFileName);
- GlobalConfiguration.Configuration
- .EnableSwagger(c =>
- {
- //用于启用和设置Swagger的配置信息。
- c.SingleApiVersion("v1", "APIUI");
- //获取项目指定路径下xml文件
- c.IncludeXmlComments(commentsFile);
- })
- .EnableSwaggerUi(c =>
- {
- //用于启用UI界面。
- });
- }
- }
上述代码把api工程的XML注释加入到Swagger中。一般我们会把viewmodel或者其他类型定义在不同的工程中,通过下面的代码可以继续加入其它xml注释文件。(对应功能需要启用XML文档文件生成)
汉化 SwaggerUI
新增js,内容如下
- 'use strict';
- /**
- * Translator for documentation pages.
- *
- * To enable translation you should include one of language-files in your index.html
- * after <script src='lang/translator.js' type='text/javascript'></script>.
- * For example - <script src='lang/ru.js' type='text/javascript'></script>
- *
- * If you wish to translate some new texsts you should do two things:
- * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too.
- * 2. Mark that text it templates this way <anyHtmlTag data-sw-translate>New Phrase</anyHtmlTag> or <anyHtmlTag data-sw-translate value='New Phrase'/>.
- * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate.
- *
- */
- window.SwaggerTranslator = {
- _words: [],
- translate: function () {
- var $this = this;
- $('[data-sw-translate]').each(function () {
- $(this).html($this._tryTranslate($(this).html()));
- $(this).val($this._tryTranslate($(this).val()));
- $(this).attr('title', $this._tryTranslate($(this).attr('title')));
- });
- },
- _tryTranslate: function (word) {
- return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word;
- },
- learn: function (wordsMap) {
- this._words = wordsMap;
- }
- };
- /* jshint quotmark: double */
- window.SwaggerTranslator.learn({
- "Warning: Deprecated": "警告:已过时",
- "Implementation Notes": "实现备注",
- "Response Class": "响应类",
- "Status": "状态",
- "Parameters": "参数",
- "Parameter": "参数",
- "Value": "值",
- "Description": "描述",
- "Parameter Type": "参数类型",
- "Data Type": "数据类型",
- "Response Messages": "响应消息",
- "HTTP Status Code": "HTTP状态码",
- "Reason": "原因",
- "Response Model": "响应模型",
- "Request URL": "请求URL",
- "Response Body": "响应体",
- "Response Code": "响应码",
- "Response Headers": "响应头",
- "Hide Response": "隐藏响应",
- "Headers": "头",
- "Try it out!": "试一下!",
- "Show/Hide": "显示/隐藏",
- "List Operations": "显示操作",
- "Expand Operations": "展开操作",
- "Raw": "原始",
- "can't parse JSON. Raw result": "无法解析JSON. 原始结果",
- "Model Schema": "模型架构",
- "Model": "模型",
- "apply": "应用",
- "Username": "用户名",
- "Password": "密码",
- "Terms of service": "服务条款",
- "Created by": "创建者",
- "See more at": "查看更多:",
- "Contact the developer": "联系开发者",
- "api version": "api版本",
- "Response Content Type": "响应Content Type",
- "fetching resource": "正在获取资源",
- "fetching resource list": "正在获取资源列表",
- "Explore": "浏览",
- "Show Swagger Petstore Example Apis": "显示 Swagger Petstore 示例 Apis",
- "Can't read from server. It may not have the appropriate access-control-origin settings.": "无法从服务器读取。可能没有正确设置access-control-origin。",
- "Please specify the protocol for": "请指定协议:",
- "Can't read swagger JSON from": "无法读取swagger JSON于",
- "Finished Loading Resource Information. Rendering Swagger UI": "已加载资源信息。正在渲染Swagger UI",
- "Unable to read api": "无法读取api",
- "from path": "从路径",
- "server returned": "服务器返回"
- });
- $(function () {
- window.SwaggerTranslator.translate();
- });
注:右键点击该js文件修改属性为嵌入的资源
修改 SwaggerConfig文件:修改如下
- public static void Register()
- {
- var thisAssembly = typeof(SwaggerConfig).Assembly;
- //获取项目文件路径
- var baseDirectory = AppDomain.CurrentDomain.BaseDirectory + @"\App_Data\";
- var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
- var commentsFile = Path.Combine(baseDirectory, commentsFileName);
- GlobalConfiguration.Configuration
- .EnableSwagger(c =>
- {
- //用于启用和设置Swagger的配置信息。
- c.SingleApiVersion("v1", "APIUI");
- //获取项目指定路径下xml文件
- c.IncludeXmlComments(commentsFile);
- })
- .EnableSwaggerUi(c =>
- {
- //用于启用UI界面上的东西。
- //加载汉化的js文件,注意 swagger.js文件属性必须设置为“嵌入的资源”。 APIUI.Scripts.swagger.js依次是:项目名称->文件夹->js文件名
- c.InjectJavaScript(Assembly.GetExecutingAssembly(), "APIUI.Scripts.swagger.js");
- });
- }
效果如下:
C# Swagger 生成接口文档的更多相关文章
- asp.net core 使用 swagger 生成接口文档
参考地址:http://www.cnblogs.com/daxnet/p/6181366.html http://www.jianshu.com/p/fa5a9b76f3ed 微软参考文档:https ...
- webapi 利用webapiHelp和swagger生成接口文档
webapi 利用webapiHelp和swagger生成接口文档.均依赖xml(需允许项目生成注释xml) webapiHelp:微软技术自带,仅含有模块.方法.请求-相应参数的注释. swagge ...
- .net core 使用 swagger 生成接口文档
微软参考文档:https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs= ...
- asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档
asp.net core中使用Swashbuckle.AspNetCore(swagger)生成接口文档 Swashbuckle.AspNetCore:swagger的asp.net core实现 项 ...
- Django使用swagger生成接口文档
参考博客:Django接入Swagger,生成Swagger接口文档-操作解析 Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.总体目标是使客户端和文 ...
- Go语言使用swagger生成接口文档
swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言.Swagger与一组开源软件工具一起使用,以设计.构建.记录和使用RESTful Web服 ...
- 用Swagger生成接口文档
Swagger简介 在系统设计的时候,各个应用之间往往是通过接口进行交互的.因此接口的定义在整个团队中就变得尤为重要.我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接 ...
- WebAPI使用Swagger生成接口文档
开发工具:VS2017 版本15.7.1 新建项目,选择空模板,下面只勾选WebAPI 配置Web.config <system.webServer> 节点改为 <system.we ...
- Spring Boot 集成 Swagger生成接口文档
目的: Swagger是什么 Swagger的优点 Swagger的使用 Swagger是什么 官网(https://swagger.io/) Swagger 是一个规范和完整的框架,用于生成.描述. ...
- spring-boot-route(五)整合Swagger生成接口文档
目前,大多数公司都采用了前后端分离的开发模式,为了解决前后端人员的沟通问题,后端人员在开发接口的时候会选择使用swagger2来生成对应的接口文档,swagger2提供了强大的页面调试功能,这样可以有 ...
随机推荐
- PostgreSQL9.6.2的WINDOWS下安装
下载链接:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows 安装链接:http://www.cn ...
- Ios8之后, 定位的delegate不能触发的问题
if([CLLocationManager locationServicesEnabled]){ self.locationManage = [[[CLLocationManager alloc] i ...
- 底部粘连(stiky footer)布局
前面的话 在网页设计中,Sticky footers设计是最古老和最常见的效果之一,大多数人都曾经经历过.它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内 ...
- 如何通过命令或脚本方式在Windows上访问linux系统
很多情况下,我们需要在Windows上写脚本,创建计划任务程序,这个过程中可能需要访问linux系统,执行脚本或者上传下载文件.并且我们也不想在Windows上安装什么东西.那最好的办法就是使用put ...
- Servlet和web服务器关系
前面的博客我详细的罗列了下Servlet的常用的类和接口,然后在前面的前面我类似tomcat模拟了一套web服务器,这里来做一个统一的整理,这样子可以更好的把握Servlet,也可以更好的了解下web ...
- Linux使用top与free命令查看CPU与内存使用情况
top命令: 显示内容解释: 第一行top分别为:当前时间:系统运行天数:使用者个数:系统负载的平均值,后面的三个值分别为1分钟前.5分钟前.15分钟前进程的平均数,这个数值超过 CPU 数目时,说明 ...
- ORACLE约束总结
你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...
- win10下端口被占用解决办法
调试socket通信的时候,如果程序未正常结束,重新启动会报端口被占用的错误. 一 查找被占用的端口 解决办法如下:按win+R输入cmd打开控制台,输入 netstat -ano|findstr 8 ...
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.3_2.5_带修正偏差的指数加权平均
Optimization Algorithms优化算法 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3 指数加权平均 举个例子,对于图中英国的温度数据计算移动平均值或者说是移动平均值( ...
- 初识Python装饰器
python中,一切皆对象.做为面向对象开发中非常重要的一个环节,函数有着无可替代的作用. 函数可以作为对象赋值给一个变量,可以作为元素添加到集合对象中,可以作为参数值传递给其它函数,还可以当做函数的 ...