如何使 WebAPI 自动生成漂亮又实用在线API文档

1.前言

1.1 SwaggerUI

SwaggerUI 是一个简单的Restful API 测试和文档工具。简单、漂亮、易用(官方demo)。通过读取JSON 配置显示API. 项目本身仅仅也只依赖一些 html,css.js静态文件. 你可以几乎放在任何Web容器上使用。

1.2 Swashbuckle

Swashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置。再通过SwaggerUI 显示出来。类库中已经包含SwaggerUI 。所以不需要额外安装。

2.快速开始

  • 创建项目 OnlineAPI来封装百度音乐服务(示例下载) ,通过API可以搜索、获取音乐的信息和播放连接。

我尽量删除一些我们demo中不会用到的一些文件,使其看上去比较简洁。

  • WebAPI 安装 Swashbuckle

    Install-Package Swashbuckle
  • 代码注释生成文档说明。
    Swashbuckle 是通过生成的XML文件来读取注释的,生成 SwaggerUI,JSON 配置中的说明的。
    安装时会在项目目录 App_Start 文件夹下生成一个 SwaggerConfig.cs 配置文件,用于配置 SwaggerUI 相关展示行为的。如图:

  • 将配置文件大概99行注释去掉并修改为

c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name));
  • 并在当前类中添加一个方法

    /// <summary>/// </summary>/// <param name="name"></param>/// <returns></returns>protected static string GetXmlCommentsPath(string name){ return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
    }
  • 紧接着你在此Web项目属性生成选卡中勾选 “XML 文档文件”,编译过程中生成类库的注释文件

  • 添加百度音乐 3个API

  • 访问 http://<youhost>/swagger/ui/index,最终显示效果

  • 我们通过API 测试API 是否成功运行

3.添加自定义HTTP Header

在开发移动端 API时常常需要验证权限,验证参数放在Http请求头中是再好不过了。WebAPI配合过滤器验证权限即可

首先我们需要创建一个 IOperationFilter 接口的类。IOperationFilter

在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码

c.OperationFilter<HttpHeaderFilter>();

添加Web权限过滤器

在你想要的ApiController 或者是 Action 添加过滤器

[AccessKey]

最终显示效果

4.显示上传文件参数

SwaggerUI 有上传文件的功能和添加自定义HTTP Header 做法类似,只是我们通过特殊的设置来标示API具有上传文件的功能

在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码

c.OperationFilter<UploadFilter>();

API 文档展示效果

5.版本和资源

你可以通过下列连接获取相关说明。
OnlineAPI Demo 项目下载
OnlineAPI Demo下载
Swashbuckle 项目地址:
https://github.com/domaindrivendev/Swashbuckle
swagger-ui 项目地址:
https://github.com/swagger-api/swagger-ui
swagger-ui 官网地址:
http://swagger.io/swagger-ui/


相关文章:

  • WebAPI前置知识:HTTP与RestfulAPI

  • WEB API系列(一):WEB API的适用场景、第一个实例

  • WEB API 系列(二) Filter的使用以及执行顺序

  • ASP.NET Web API 安全筛选器

  • Web API 基于ASP.NET Identity的Basic Authentication

  • ASP.NET Web Api使用CacheCow和ETag缓存资源

  • 使用 West Wind WebSurge 对 ASP.NET Web API 服务进行压力测试

  • Web API应用支持HTTPS的经验总结

  • Dion Hinchcliffe谈Web API的过去与未来

  • WebAPI生成可导入到PostMan的数据


原文地址:http://www.cnblogs.com/Arrays/p/5146194.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot超详细教程_SpringBoot五步配置Mybatis超简教程

第一步&#xff1a;Maven里面添加mybatis的引用jar包&#xff1a;org.mybatis.spring.bootmybatis-spring-boot-starter1.3.1com.github.pagehelperpagehelper-spring-boot-starter1.2.3mysqlmysql-connector-javaorg.springframeworkspring-tx第二步&#xff1a;在application…

13.信号量临界区保护

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.操作系统使用信号量实现进程同步&#xff08;合作&#xff09;&#xff0c;走走停停&#xff0c;推进多进程合理有序向前执行&#xff1b; 3.靠临…

Oracle入门(十二F)之表分区

转载自 oracle的 分表 详解 -----表分区一、分区表基础知识 (1) 表空间及分区表的概念表空间&#xff1a;是一个或多个数据文件的集合&#xff0c;所有的数据对象都存放在指定的表空间中&#xff0c;但主要存放的是表&#xff0c; 所以称作表空间。分区表&#xff1a; 当表中的…

工作展望简短_新一年工作展望短句

1、愿所有人认真告别现实的2020&#xff0c;认真迎接希望的2021。2、新的一年快开始了&#xff0c;年底一总结&#xff0c;发现自己只收获了年龄。3、来年&#xff0c;有趣有盼&#xff0c;福气不减。4、新的一年&#xff0c;心情&#xff0c;生活都像烟花一样灿烂。5、待凛冬离…

关于《在Windows与.NET平台上的持续交付实践》的问答录

《在Windows与.NET平台上的持续交付实践》&#xff08;Continuous Delivery with Windows and .Net&#xff09;&#xff08;免费下载&#xff09;是由Matthew Skelton与Chris ODell所编著的一本简短的书籍。对于在Windows与.NET环境中工作的开发者而言&#xff0c;本书可以说是…

14.信号量的代码实现

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.信号量基础知识&#xff0c;refer2 posts below. 12.进程同步与信号量_PacosonSWJTU的博客-CSDN博客1.本文内容总结自 B站 《操作系统-哈工大李治…

Oracle入门(十二G1)修改序列(Sequence)起始值的方法

转载自 Oracle修改序列&#xff08;Sequence&#xff09;起始值的方法Oracle 序列&#xff08;Sequence&#xff09;主要用于生成流水号&#xff0c;在应用中经常会用到&#xff0c;特别是作为ID值&#xff0c;拿来做表主键使用较多。 但是&#xff0c;有时需要修改序列初始值&…

weex安装环境_WEEX跨平台开发环境搭建

一、Weex简介大约两年前&#xff0c;为了写一本Weex的入门书籍&#xff0c;我花了几个月的时间学习了下Weex跨平台相关的知识。Weex 是阿里前端技术团队开源的一套跨平台开发方案&#xff0c;能以Web的开发体验构建高性能、可扩展的 Native 应用。简单来说&#xff0c;在集成了…

C#中使用gRPC

由于有NuGet&#xff0c;使得C#在配置项目时非常简单。 1. 在NuGet中添加ProtocolBuffer和gRPC引用 protocol buffer 3.0版本&#xff0c;在NuGet插件界面选择Include Prerelease&#xff0c;查找google protocol buffer。如果不选择include rerelease&#xff0c;查找到的prot…

15.操作系统死锁处理

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 【19.1】死锁场景 1&#xff09;死锁&#xff1a; 多个进程由于互相等待对方持有的资源而造成的谁也无法执行的情况&#xff1b; 1.1&#xff09;死…

使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台

前面讲解了VSCode开发调试 .NET Core。都只是在windows下运行。 .NET Core真正的核心是跨平台&#xff0c;我们现在来了解学习 .NET Core 跨平台。 在windows 下开发.NET Core 应用程序&#xff0c;然后部署到Linux 平台运行。 .NET Core RC2版基本上已经完成。 https://githu…

centos 并发请求数_linux实现高并发请求工具

使用工具abCentOS6默认安装CentOS7需要手动安装contos7下&#xff1a;1、联网&#xff1a;yum install httpd-tools2、未联网(没试过)&#xff1a;(1)进入cd /run/media/root/CentOS78664/Packages(路径跟centos6不同)(2)顺序安装apr-1.4.8-3.el7.86_64.rpmapr-util-1.5.2-6.el…

16.内存使用与分段

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 【1】 内存使用 【1.1】程序加载到内存 1&#xff09;内存使用&#xff1a;将程序放到内存中&#xff0c;PC寄存器指向开始地址&#xff1b; 2&…

Oracle入门(十三)之SQL的DML

数据操纵语言&#xff08;Data Manipulation Language, DML&#xff09;是SQL语言中&#xff0c;负责对数据库对象运行数据访问工作的指令集&#xff0c;以INSERT、UPDATE、DELETE三种指令为核心&#xff0c;分别代表插入、更新与删除&#xff0c;是开发以数据为中心的应用程序…

.NET Core 跨平台发布(dotnet publish)

.NET Core 跨平台发布(dotnet publish) ,无需安装.NET Core SDK,就可以运行。 前面讲解了.NET Core 的VSCode 开发。现在来讲讲发布&#xff08;dotnet publish&#xff09;。 .NET Core and ASP.NET Core 1.0 RC2 runtime and libraries 在五月中旬发布。 .NET Core and ASP.N…

Oracle入门(十三A)之Select

一、数据查询语句 &#xff08;1&#xff09;select语句完整的句法select 目标表的列名或列表达式序列from 基本表名和&#xff08;或&#xff09;视图序列[ where 行条件表达式 ][ group by 列名序列[ having 组条件表达式 ] ][ order by 列名[ asc|desc ]&#xff0c;… ] &a…

华为交换机ssh思科交换机_华为交换机 ssh 配置(极简版)

华为的 ssh 叫 STelnet(1)配置STelnet服务器功能及参数rsa local-key-pair create [1]stelnet server enable [2]undo ssh server keepalive disable [3][1] 创建密钥对&#xff0c;这个是必须的。可以选用 rsa dsa ecc 等加密算法&#xff0c;这里选择了最常用的rsa。输入命令…

17.内存分区与分页

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.程序使用内存的3个步骤&#xff1a; 步骤1&#xff1a;把程序分为多个段&#xff0c;包括代码段&#xff0c;数据段&#xff1b;这是编译要做的事…

漫谈C#编程语言在游戏领域的应用

0x00 前言 随着微软越来越开放&#xff0c;C#也变得越来越吸引人们的眼球。而在游戏行业中&#xff0c;C#也开始慢慢地获得了关注。这不&#xff0c; 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发&#xff0c;跨平台部署了。 所以&#xff0c;我们就来总结一…

dex工具与transform_Android Studio打包程序时出现transformClassesWithDexForRelease错误

百度半天.没找到直接原因..国外网站上有写这个错误的..国内的真心没找到..英语水平有太低..实在没看懂怎么搞..后来发现clean项目的时候是提示如下错误:Information:Gradle tasks [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndr…