使用Swashbuckle构建RESTful风格文档

简介:   本次和大家分享的是Swagger to WebApi的nuget包Swashbuckle;因为项目需要统一api文档的风格,并要支持多种开发语言(C#,java,python),所以首先想到的是swagger来构建api文档,本章讲解的是对.net的webpi来生成文档,后续会将java的springmvc+swagger来构建接口文档。

  本次和大家分享的是Swagger to WebApi的nuget包Swashbuckle;因为项目需要统一api文档的风格,并要支持多种开发语言(C#,java,python),所以首先想到的是swagger来构建api文档,本章讲解的是对.net的webpi来生成文档,后续会将java的springmvc+swagger来构建接口文档。

  • 准备工作
  • 快速构建简易api文档
  • swagger文档支持在header中增加Token参数

. 准备工作

  首先创webapi项目,然后通过nuget管理器安装Swashbuckle的包,我这里通过console命令安装:

   Install-Package Swashbuckle -Version 5.6.0 

  注意只需要安装这个包就行了,其他的会自动引用,由于Swashbuckle包含了swagger的引用,所以不用再单独操作引用了。

. 快速构建简易api文档

  如上安装完Swashbuckle后其实就能够直接运行看效果了,我这里的访问路径是: http://localhost:51847/swagger/ui/index ,注意:/swagger/ui/index 是默认固定的路径,这是nuget包封装的路径,访问后能看到如下界面效果:

  

  一个简易的文档就弄好了,swagger的颜色看起来搭配不错;由于大多数接口都是post请求方式,因此咋们以/api/values的post接口为例如:

  

  对于接口文档而言,上面文档存在如下一些疏漏:

  • 未说明方法的功能
  • 参数属性的描述没有
  • 返回属性的描述没有

  为了方便其他人员对接接口,所以对接口文档我们需要增加一些描述,要增加描述这里就要知晓:Swashbuckle是通过xml文件来读取配置信息的,该xml文件里面包含了我们在代码中对方法,对类,对参数,对返回值做的文字描述;首先定义一个请求和响应的实体 如:

 1 /// <summary>
 2     /// 登录请求
 3     /// </summary>
 4     public class MoLoginRq
 5     {
 6         /// <summary>
 7         /// 账号
 8         /// </summary>
 9         public string UserName { get; set; }
10         /// <summary>
11         /// 密码
12         /// </summary>
13         public string UserPwd { get; set; }
14     }
15 
16     /// <summary>
17     /// 登录返回
18     /// </summary>
19     public class MoLoginRp
20     {
21         /// <summary>
22         /// 登录返回的token
23         /// </summary>
24         public string Token { get; set; }
25     }
View Code

  新增一个登录接口,代码如:

 1 /// <summary>
 2         /// 登录接口
 3         /// </summary>
 4         /// <param name="rq">请求</param>
 5         /// <returns>响应</returns>
 6         [HttpPost]
 7         public MoLoginRp Login(MoLoginRq rq)
 8         {
 9             MoLoginRp rp = new MoLoginRp();
10 
11             rp.Token = Guid.NewGuid().ToString();
12 
13             return rp;
14         }

  到这里基本的动作都做完了,剩下的是上面我们说的xml文件怎么来,又怎么和swagger关联;

  首先,看项目的App_Start文件夹里面应该在安装nuget包的时候会自动增加一个 SwaggerConfig.cs 文件,里面就是swagger使用的一些设置,我们需要找到被注释的: //c.IncludeXmlComments(GetXmlCommentsPath()); 代码,取消注释并创建一个 GetXmlCommentsPath() 方法(获取xml注释文件路径) 如:

1 public static string GetXmlCommentsPath()
2         {
3             //D:/WebApplication/bin/WebApplication.xml
4             return Path.Combine(
5                 AppDomain.CurrentDomain.BaseDirectory,
6                 "bin",
7                 string.Format("{0}.XML", typeof(SwaggerConfig).Assembly.GetName().Name));
8         }

  这个时候代码基本完成了,还需要我们通过vs设置一下生成项目时自动创建xml文件,如下:鼠标右键起始项目-》属性-》生成-》勾选xml文件

  

  然后,鼠标右键重新生成下项目,这个时候bin目录就有了WebApplication.xml

  

  这个xml文件内容就是一些注释的信息,具体各位自己点看看下xml内容;到这里我们设置和代码都弄完了,来看下swagger页面效果,通过预览 http://localhost:51847/swagger/ui/index :

  

  这个时候我们增加的一些文字说明就完成了,这个时候细心的朋友能够看出来我们的Action方法名称没识别出来,这不符合我们命名规范,这里有两种解决方案:

  • 在action方法上增加 [ActionName("Login")] 标记
  • 修改WebApiConfig.cs文件的路由如:"api/{controller}/{action}/{id}"

  这里我采用后者,为了统一通过方法名来识别对应接口:

  

swagger文档支持在header中增加Token参数

  对于api接口,我们通常在登录后的其他操作都会让调用方传递授权的token,而token一般做法是放在请求的header里面,swagger文档为了测试方便可以把token放在header作为参数传递;首先创建测试接口GetNames:

 1         /// <summary>
 2         /// 获取用户名称列表
 3         /// </summary>
 4         /// <returns></returns>
 5         [HttpPost]
 6         public List<string> GetNames()
 7         {
 8             List<string> list = new List<string> {"神牛001","神牛002", "神牛003" };
 9 
10             return list;
11         }

  然后在App_Start/SwaggerConfig.cs文件中添加:

1 c.ApiKey("apiKey")
2      .Description("授权token")
3      .Name("token")
4      .In("header");

  并启动:

1 EnableSwaggerUi(c =>
2      {
3           c.EnableApiKeySupport("token", "header");
4     });

  然后启动并在swagger界面输入:

  

  这个时候点击try it out请求接口,能够在看到请求里面包含了token信息:

  

目录
相关文章
|
28天前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
21天前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
38 12
|
27天前
|
监控 安全 API
深入浅出:构建高效RESTful API的最佳实践
在数字化时代,API已成为连接不同软件和服务的桥梁。本文将带你深入了解如何设计和维护一个高效、可扩展且安全的RESTful API。我们将从基础概念出发,逐步深入到高级技巧,让你能够掌握创建优质API的关键要素。无论你是初学者还是有经验的开发者,这篇文章都将为你提供实用的指导和启示。让我们一起探索API设计的奥秘,打造出色的后端服务吧!
|
25天前
|
JSON 缓存 测试技术
构建高效RESTful API的后端实践指南####
本文将深入探讨如何设计并实现一个高效、可扩展且易于维护的RESTful API。不同于传统的摘要概述,本节将直接以行动指南的形式,列出构建RESTful API时必须遵循的核心原则与最佳实践,旨在为开发者提供一套直接可行的实施框架,快速提升API设计与开发能力。 ####
|
28天前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
28天前
|
JSON API 数据格式
探索后端开发:从零构建简易RESTful API
在数字时代的浪潮中,后端开发如同搭建一座桥梁,连接着用户界面与数据世界。本文将引导读者步入后端开发的殿堂,通过构建一个简易的RESTful API,揭示其背后的逻辑与魅力。我们将从基础概念出发,逐步深入到实际操作,不仅分享代码示例,更探讨如何思考和解决问题,让每一位读者都能在后端开发的道路上迈出坚实的一步。
|
26天前
|
安全 测试技术 API
构建高效RESTful API:后端开发的艺术与实践####
在现代软件开发的浩瀚星空中,RESTful API如同一座桥梁,连接着前端世界的绚丽多彩与后端逻辑的深邃复杂。本文旨在探讨如何精心打造一款既高效又易于维护的RESTful API,通过深入浅出的方式,剖析其设计原则、实现技巧及最佳实践,为后端开发者提供一份实用的指南。我们不深入晦涩的理论,只聚焦于那些能够即刻提升API品质与开发效率的关键点,让你的API在众多服务中脱颖而出。 ####
32 0
|
24天前
|
XML JSON 缓存
深入理解RESTful API设计原则与实践
在现代软件开发中,构建高效、可扩展的应用程序接口(API)是至关重要的。本文旨在探讨RESTful API的核心设计理念,包括其基于HTTP协议的特性,以及如何在实际应用中遵循这些原则来优化API设计。我们将通过具体示例和最佳实践,展示如何创建易于理解、维护且性能优良的RESTful服务,从而提升前后端分离架构下的开发效率和用户体验。
|
1月前
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
|
1月前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务