Asp.Net Core SwaggerUI 接入

简单了解

swagger的目的简单来说就是,不用为每个接口手动写接口文档,因为它是根据接口自动生成的,接口更改时文档也同步更新,减少了手动更新的麻烦和遗漏。同时也提供了接口的调试等功能,你不用打开postman等接口测试软件来测试接口;如果有写备注的话,接口、入参和输出都有详细的备注说明,调用接口的人也能更加直观的读懂接口。沟通效率和工作效率也会大大提升。

Swagger接入的步骤:

  1. 注册Swagger生成器:services.AddSwaggerGen().
  2. 插入中间件,将生成的Swagger公开为JSON节点:app.UseSwagger()
  3. 插入Swagger-UI中间件,将指定的swagger json端点为其提供支持:app.UseSwaggerUI()

一、添加Nuget包

Package Manager : Install-Package Swashbuckle.AspNetCore

CLI : dotnet add package Swashbuckle.AspNetCore

二、注册swagger文档服务

  • 注意

  1. 如果mvc使用的是services.AddMvcCore(),则需要手动添加ApiExplorer,因为SwashBuckle强烈依赖于ApiExplorer,ApiExplorer用来发现控制器中的接口方法。需要手动添加。如:

    services.AddMvcCore().AddApiExplorer();

  2. 如果使用的是services.AddMvc(),则不需要再进行注册。因为AddMvc()中已经添加了ApiExplorer。如:

        public static IMvcBuilder AddMvc(this IServiceCollection services)
    {
    if (services == null)
    throw new ArgumentNullException(nameof (services));
    IMvcCoreBuilder builder = services.AddMvcCore();
    builder.AddApiExplorer();//在这里
    builder.AddAuthorization();
    MvcServiceCollectionExtensions.AddDefaultFrameworkParts(builder.PartManager);
    builder.AddFormatterMappings();
    builder.AddViews();
    builder.AddRazorViewEngine();
    builder.AddRazorPages();
    builder.AddCacheTagHelper();
    builder.AddDataAnnotations();
    builder.AddJsonFormatters();
    builder.AddCors();
    return (IMvcBuilder) new MvcBuilder(builder.Services, builder.PartManager);
    }
  3. 什么时候用AddMvc(),什么时候用AddMvcCore()呢?

    通过AddMvc()的方法中我们应该可以发现,里面有添加ViewRazorTagHelper服务,这些在WebApi项目中是用不到的。所以:

    1).如果你的项目是mvc web程序,则使用AddMvc().

    2).如果的项目是webapi,则使用AddMvcCore(),然后酌情添加需要的其它服务;当然使用AddMvc()也没有问题。

  • 添加Swagger服务

services.AddSwaggerGen(options =>
{
options.SwaggerDoc(AppDefaults.ApiDocumentName, new Info
{
Title = AppDefaults.ApiDocumentTitle,
Description = AppDefaults.ApiDocumentDescription,
Version = typeof(Startup).Assembly.GetName().Version.ToString()
});
//加载注释文件
Directory.GetFiles(Environment.ContentRootPath, "*.xml", SearchOption.AllDirectories)
.ToList()
.ForEach(f => options.IncludeXmlComments(f));
});

三、添加管道

//生成swagger-json文件,并重定义swagger-json文件路由模板,这里我修改了 swagger-json 的路由模板。
//如果不自定义的话,默认是 swagger/{documentName}/swagger.json
app.UseSwagger(options => options.RouteTemplate = "{documentName}/swagger.json"); app.UseSwaggerUI(options =>
{
//指定生成swagger-json文件路径,为SwaggerUI提供数据。
//如果上边路由模板没有自定义,则完成路径是 /swagger/{AppDefaults.ApiDocumentName}/swagger.json
options.SwaggerEndpoint($"/{AppDefaults.ApiDocumentName}/swagger.json", AppDefaults.ApiDocumentName); //自定义SwaggerUI页面路由前缀
//地址栏输入 http://loacalhost:5000/lxp 就可以打开SwaggerUI页面
options.RoutePrefix = "lxp";
});

四、定义接口

  • 如果想要控制器在Swagger中显示,所有控制器必须使用属性路由
  • 接口方法要使用 Http 属性和 From 特性标注

例如:

    [Route("[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet("name")]
public async Task<ActionResult<string>> GetNameAsync([FromQuery] string name)
{
if (!string.IsNullOrEmpty(name))
{
ModelState.TryAddModelError(nameof(name), $"{nameof(name)} can not be empty");
} if (!ModelState.IsValid)
{
return BadRequest(ModelState);
} return await Task.FromResult(name);
}
}

补充:

  • AppDefaults 是我定义一个常量的类

Asp.Net Core SwaggerUI 接入的更多相关文章

  1. ASP.NET Core Swagger接入使用IdentityServer4 的 WebApi

    写在前面 是这样的,我们现在接口使用了Ocelot做网关,Ocelot里面集成了基于IdentityServer4开发的授权中心用于对Api资源的保护.问题来了,我们的Api用了SwaggerUI做接 ...

  2. 使用Azure Application Insignhts监控ASP.NET Core应用程序

    Application Insignhts是微软开发的一套监控程序.他可以对线上的应用程序进行全方位的监控,比如监控每秒的请求数,失败的请求,追踪异常,对每个请求进行监控,从http的耗时,到SQL查 ...

  3. ASP.NET Core:使用Dapper和SwaggerUI来丰富你的系统框架

    一.概述 1.用VS2017创建如下图的几个.NET Standard类库,默认版本为1.4,你可以通过项目属性进行修改,最高支持到1.6,大概五月份左右会更新至2.0,API会翻倍,很期待! 排名分 ...

  4. ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付接口及同步跳转及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET ...

  5. ASP.NET Core Web 支付功能接入 微信-扫码支付篇

    这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET Core SDK ...

  6. Asp.Net Core WebApi中接入Swagger组件(初级)

    开发WebApi时通常需要为调用我们Api的客户端提供说明文档.Swagger便是为此而存在的,能够提供在线调用.调试的功能和API文档界面. 环境介绍:Asp.Net Core WebApi + S ...

  7. 【转载】ASP.NET Core Web 支付功能接入 微信-扫码支付篇

    转自:http://www.cnblogs.com/essenroc/p/8630730.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步 ...

  8. 【转载】ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    转自:http://www.cnblogs.com/essenroc/p/8627775.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付 ...

  9. ASP.NET CORE 边学边记之 SwaggerUI简单配置

    前言 当使用 ASP.NET CORE 开发WebApi程序时候,一般使用SwaggerUI生成接口文档.本文记录最简单的一个配置.(生成的文档无注释) 操作 首先安装Nuget包. 然后在Start ...

随机推荐

  1. Delphi7 时钟(使用了多个自定义组件)

    http://download.csdn.net/detail/akof1314/3073289

  2. matplotlib简介

    python的matplotlib包可以帮助我们绘制丰富的图表,有助于我们的数据分析. matplotlib官方文档:matplotlib 本博客所有代码默认导入matplotlib.pyplot和n ...

  3. LockWindowUpdate的函数的用法(不忽略消息,只是暂时不响应,但WM_SETREDRAW根本不接受重绘消息)

    Application.ProcessMessages;LockWindowUpdate(Self.Handle);  //锁住当前窗口 LockWindowUpdate(0)//解除锁定窗口 Loc ...

  4. [收录] Highcharts-ng —— AngularJS 的图表扩展

    原文:http://www.tuicool.com/articles/u6VZJjQ Highcharts-ng 是一个 AngularJS 的指令扩展,实现了在AngularJS 应用中集成High ...

  5. T4生成整理

    将一些公用的东西弄到一个类库DM.T4里面,哪个项目需要用到t4生成的话,将DM.T4的生成事件中将dll和ModelAuto.ttinclude复制到需要使用T4的项目的生成目录下,如果这样 cop ...

  6. Voovan 是一个高性能异步网络框架和 HTTP(Java)

    Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 客户端抓取.动态编译支持.数据库访问封装以及 DateTime.String.Log.反射.对象工具.流操作.文件操 ...

  7. ASP.NET Core 通过 Microsoft.DotNet.Watcher.Tools 实现热部署

    之前开发前端的时候,webpack 会有热更新工具,在修改了代码之后,自动将代码编译,实时展现到页面上,给开发带来了极大的方便. Java也可以通过第三方插件JRebel实现热部署,不用频繁的重启To ...

  8. Android和IOS启动第三方地图APP

    最近客户新提了需求,地址字段要能通过第三方的地图进行定位,于是对Android和IOS端进行了调整. 以下是调用地图部分的代码. android可按照包名来判断app是否存在: 方法: /* * ch ...

  9. 304902阿里巴巴Java开发手册1.4.0

    转自官网 前言 <阿里巴巴Java开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者.现代软件行业的高速 ...

  10. java方法中Collection集合的基本使用与方法

    集合类的由来,对象用于封闭特有数据,对象多了需要存储,如果对象的个数不确定就使用集合容器进行存储. 集合特点:1.用于存储对象的容器.2.集合的长度是可变的.3.集合中不可以存储基本数据类型值. 集合 ...