在前后端分离的大环境下,API接口文档成为了前后端交流的一个重点。Swagger让开发人员摆脱了写接口文档的痛苦。

官方网址:https://swagger.io/

在.Net Core WebApi中通过简单配置即可使用这一强大的功能。

目录:

.NetCore WebApi——Swagger简单配置

.NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)

.NetCore WebApi —— Swagger版本控制

1.新建一个API的项目

选择 API 项目

2.引入Swagger包。.Net Core 中支持两个分别为Swashbuckle和NSwag。两者的配置大同小异。这里以Swashbuckle为例。

方式1:选择工具——Nuget包管理——管理解决方案的Nuget包

搜索:Swashbuckle.AspNetCore  安装即可

方式2:直接在程序包管理控制台输入:Install-Package Swashbuckle.AspNetCore  回车即可安装

安装之后在项目的Nuget包中就可以看到了

3.配置Swagger中间件

3.1 在Startup类ConfigureServices方法中添加Swagger服务并配置文档信息

  

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. // 注册Swagger服务
  4. services.AddSwaggerGen(c =>
  5. {
  6. // 添加文档信息
  7. c.SwaggerDoc("v1", new Info { Title = "CoreWebApi", Version = "v1" });
  8. });
  9. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
  10. }

   3.2 在 Startup类Configure 方法中,启用中间件为生成的 JSON 文档和 Swagger UI 提供服务

  

  1. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  2. {
  3. if (env.IsDevelopment())
  4. {
  5. app.UseDeveloperExceptionPage();
  6. }
  7. else
  8. {
  9. // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  10. app.UseHsts();
  11. }
  12.  
  13. app.UseHttpsRedirection();
  14. // 启用Swagger中间件
  15. app.UseSwagger();
  16.  
  17. // 配置SwaggerUI
  18. app.UseSwaggerUI(c =>
  19. {
  20. c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreWebApi");
  21.  
  22. });
  23. app.UseMvc();
  24. }

右键项目属性,将URL地址固定到某个端口

然后将启动项设置为当前项目,然后启动。

在根目录目前是没有东西的。下一步将在根目录处使用SwaggerUI

将RoutePrefix属性设置为空

  1. app.UseHttpsRedirection();
  2. // 启用Swagger中间件
  3. app.UseSwagger();
  4.  
  5. // 配置SwaggerUI
  6. app.UseSwaggerUI(c =>
  7. {
  8. c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreWebApi");
  9. c.RoutePrefix = string.Empty;
  10. });

再次启动项目,SwaggerUI文档成功显示出来。整体简洁大方。

 API的信息说明:传递给AddSwaggerGen()的方法可配置一些API的信息说明以及作者信息等,来展示到UI页面。修改AddSwaggerGen()方法。 

  1. // 注册Swagger服务
  2. services.AddSwaggerGen(c =>
  3. {
  4. // 添加文档信息
  5. c.SwaggerDoc("v1", new Info
  6. {
  7. Title = "CoreWebApi",
  8. Version = "v1",
  9. Description="ASP.NET CORE WebApi",
  10. Contact=new Contact
  11. {
  12. Name="Jee",
  13. Email="princess@gmail.com"
  14. }
  15. });
  16. });

展示对应的信息

 4.启用XML注释。上边的效果只有一个简单说明,并没有我们在后台写的注释。启用XML注释之后可以轻松映射到UI界面方便前端开发人员理解。

右键当前项目——编辑****.csproj 的文件  在PropertyGroup标签组中添加如下两条

<GenerateDocumentationFile>true</GenerateDocumentationFile> <NoWarn>$(NoWarn);1591</NoWarn>

这两句的大概意思就是启用XML注释,并忽略未写注释的警告。不添加1591如果某个方法未写 "///"各式的注释,vs会有警示的消息。

之后AddSwaggerGen()方法中读取xml文件路径并启用

  1. // 注册Swagger服务
  2. services.AddSwaggerGen(c =>
  3. {
  4. // 添加文档信息
  5. c.SwaggerDoc("v1", new Info
  6. {
  7. Title = "CoreWebApi",
  8. Version = "v1",
  9. Description="ASP.NET CORE WebApi",
  10. Contact=new Contact
  11. {
  12. Name="Jee",
  13. Email="princess@gmail.com"
  14. }
  15. });
  16. // 使用反射获取xml文件。并构造出文件的路径
  17. var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
  18. var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
  19. // 启用xml注释. 该方法第二个参数启用控制器的注释,默认为false.
  20. c.IncludeXmlComments(xmlPath,true);
  21. });

再次启动项目,可以看到写的注释全部都映射出来了

Text类的返回值也可以映射出来

Models文件夹中的实体也可以映射在接口下方

 总结:   在.net core中配置swagger非常之快速。但这也是堪堪达到可以用的程度,算是入门级别吧。

源码:GitHub

https://github.com/xiaoMaPrincess/Asp.NetCore-WebApi

多层架构版本:

https://github.com/xiaoMaPrincess/.NetCoreWebApi

.NetCore WebApi——Swagger简单配置的更多相关文章

  1. .NetCore WebApi —— Swagger版本控制

    目录: .NetCore WebApi——Swagger简单配置 .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger) .NetCore WebApi —— Swagge ...

  2. swagger简单配置

    第一步: 在nuget.org中查找Swashbuckle并下载 在nuget.org中查找Swagger.net.UI,并下载 第二步: 下载完之后,App_Start多了三个文件 Swagger. ...

  3. .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)

    上接:.NetCore WebApi——Swagger简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露 ...

  4. Asp.NetCore WebApi 引入Swagger

    一.创建一个Asp.NetCore WebApi 项目 二.引入NuGet包 SwashBuckle.AspNetCore 三.在项目属性配置中设置 四.修改项目的启动文件Startup.cs 1). ...

  5. swagger-ui 系统配置过程(基于spring+springmvc+swagger+springfox配置 web-api 管理系统)

    web工程部分框架信息:spring springmvc swagger springfox maven 参考文档:https://www.cnblogs.com/exmyth/p/7183753.h ...

  6. netcore webapi帮助文档设置

    如何建 .netcore webapi 项目这个就不说了,这个都没有没必要看下去. 我这里是.netcore 2.0,虽然没测过1.0的,但想来差不多. 1.Nuget Packages安装,使用程序 ...

  7. NetCore WebApi使用Jwtbearer实现认证和授权

    1. 什么是JWT? JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对 ...

  8. JWT With NetCore WebApi

    1 什么是JWT? JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象 ...

  9. WebApi Swagger 接口多版本控制 适用于APP接口管理

    最近研究了下swagger多版本的维护,网上的文章千篇一律,无法满足我的需求,分享下我的使用场景以及实现 演示环境:Visual Studio 2019.Asp.NET WebAPI.NET Fram ...

随机推荐

  1. Spring Cloud authentication with JWT service

    @RequestMapping(value = "/authenticate", method = RequestMethod.POST) public ResponseEntit ...

  2. 配置phpstorm自动上传代码

    本地的项目目录是 D:\www\guandan 虚拟机上的项目目录是 /var/www/guandan

  3. Spring Cloud @HystrixCommand和@CacheResult注解使用,参数配置

    使用Spring Cloud时绕不开Hystrix,他帮助微服务实现断路器功能.该框架的目标在于通过控制那些访问远程系统.服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力.Hystrix具备 ...

  4. Nginx多虚拟主机下泛域名配置

    http://www.tuicool.com/articles/F3Azuq 近上一个应用,让用户可以自定义二级域名,所以要配置一个泛域名来解析用户的自定义域名.  首先来说说nginx下的泛域名配置 ...

  5. TestNG失败用例自动截图

    参考:https://blog.csdn.net/wangxin1982314/article/details/50247245 1. 首先写一个截屏方法 public class ScreenSho ...

  6. 利用异或求(整数数组中,有2K+1个数,其中有2k个相同,找出不相同的那个数)

    转自https://blog.csdn.net/renjie_998003/article/details/50738025 java的位运算符中有一个叫异或的运算符,用符号(^)表示,其运算规则是: ...

  7. 终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!

    之前一直使用 SQL Server 作为主数据库而不是 MySQL ,原因之一是单机 SQL Server 性能比 MySQL 强很多,另一个原因是之前客户的系统管理员大多只有 SQL Server ...

  8. copy.copy()与copy.deepcopy()的详解

    copy.copy() 元组和列表调用这个方法效果也不一样. 元组的效果: a = [1,2,3] b = [4,5,6] c = (a,b) e = copy.copy(c) 可以看到:e和c是指向 ...

  9. USACO JAN14 奶牛冰壶运动 凸包+判定

    满足条件的一定是在凸包内的,直接判断 恬不知耻的加了特判,2333 #include<cstdio> #include<iostream> #include<cstrin ...

  10. MYSQL一键安装

    #!/bin/bash #baishuchao qq:995345781 ############################################################### ...