Asp.Net Core SwaggerUI 接入
Asp.Net Core SwaggerUI 接入
简单了解
swagger的目的简单来说就是,不用为每个接口手动写接口文档,因为它是根据接口自动生成的,接口更改时文档也同步更新,减少了手动更新的麻烦和遗漏。同时也提供了接口的调试等功能,你不用打开postman等接口测试软件来测试接口;如果有写备注的话,接口、入参和输出都有详细的备注说明,调用接口的人也能更加直观的读懂接口。沟通效率和工作效率也会大大提升。
Swagger接入的步骤:
注册Swagger生成器:services.AddSwaggerGen().
插入中间件,将生成的Swagger公开为JSON节点:app.UseSwagger()
插入Swagger-UI中间件,将指定的swagger json端点为其提供支持:app.UseSwaggerUI()
一、添加Nuget包
Package Manager : Install-Package Swashbuckle.AspNetCore
或
CLI : dotnet add package Swashbuckle.AspNetCore
二、注册swagger文档服务
注意
如果mvc使用的是services.AddMvcCore(),则需要手动添加ApiExplorer,因为SwashBuckle强烈依赖于ApiExplorer,ApiExplorer用来发现控制器中的接口方法。需要手动添加。如:
services.AddMvcCore().AddApiExplorer();
如果使用的是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); }
什么时候用AddMvc(),什么时候用AddMvcCore()呢?
通过AddMvc()的方法中我们应该可以发现,里面有添加View、Razor和TagHelper服务,这些在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 是我定义一个常量的类
原文地址https://www.cnblogs.com/imlxp/p/11223952.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Cloud中Hystrix、Ribbon及Feign的熔断关系是什么?
Spring Cloud中Hystrix、Ribbon及Feign的熔断关系是什么?导读 今天和大家聊一聊在Spring Cloud微服务框架实践中,比较核心但是又很容易把人搞得稀里糊涂的一个问题,那就是在Spring Cloud中Hystrix、Ribbon以及Feign它们三者之间在处理微服务调用超时从而触发熔断降级的关系是什么? 我们知道在Spring Cloud微服务体系下,微服务之间的互相调用可以通过Feign进行声明式调用,在这个服务调用过程中Feign会通过Ribbon从服务注册中心获取目标微服务的服务器地址列表,之后在网络请求的过程中Ribbon就会将请求以负载均衡的方式打到微服务的不同实例上,从而实现Spring Cloud微服务架构中最为关键的功能即服务发现及客户端负载均衡调用。 另一方面微服务在互相调用的过程中,为了防止某个微服务的故障消耗掉整个系统所有微服务的连接资源,所以在实施微服务调用的过程中我们会要求在调用方实施针对被调用微服务的熔断逻辑。而要实现这个逻辑场景在Spring Cloud微服务框架下我们是通过Hystrix这个框架来实现的。 调用方会针对被调...
- 下一篇
阿里云的设计理念
用阿里云就要多学阿里云的知识,阿里云作为一个庞大的云服务体系,它的设计理念是什么呢?让我们来了解一下。 阿里云产品的设计理念,第一条,阿里云通过大规模的效应来降低成本。在前面其实我们已经看到了,阿里云有强大的基础设施,它有遍布全球各个地方节点的服务器资源,那么随着这个规模越来越大,实际上平摊到单个节点上的这个成本就会不断的降低。 第二个设计理念,就是多地域多可用区的容灾。以前对于我们来说,这种跨全球跨多地域的这种容灾的这种设计其实是非常困难的,而现在它能够快速非常便利地获得,然后在同一个地域我们会有多个可用区的选择,这些可用区就是指在同一个地域下,防火、水电等完全隔离的不同的数据中心,所以现在多地域容灾对于大家来说就是唾手可得的。 第三个设计理念是开放式服务,也就是阿里云的产品,获得需要的服务器资源的方式是通过租赁,不再是像传统就是在没有云服务之前,我们都要通过购买购买物理资源,购买服务器购买存储,购买网络的设备,安全的设备等等,我们才能得到这些服务。 阿里云通过不断践行这三条设计理念,得以用实惠、安全、便捷的方式向所有人提供云服务。 引用:一起了解阿里云的设计理念、高可用的设计架构
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- 2048小游戏-低调大师作品
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作