asp.net core 3.0中使用swagger的方法与问题_实用技巧

来源:脚本之家  责任编辑:小易  

ASP.NET和ASP的区别有以下几点:1、开发语言不同。ASP使用non-type脚本语言来开发应用程序或web网页,在web端添加代码和在客户端添加代码一致,导致代码杂乱无章。ASP.NET使用strongly-type编程语言开发应用程序或web网页,也可以使用.NET Framework框架开发,代码一致性较ASP好了许多。2、运行方式不同。ASP是解释运行的编程框架,使用js等脚本语言,运行速度慢。ASP.NET是编译性的编程框架,运行效率高且使用的是服务器端预先编译好的代码库。3、开发方式不同。ASP是面向过程设计语言,代码前后端不分离,写在同一个页面,代码杂乱无章,维护性和可重用性较低。ASP.NET则是面向对象设计语言,代码前后端分离,一部分专注于编写前端代码,一部分专注于编写相应的后台功能,代码井然有序,易维护且可重用性高。4、复杂性不同。ASP复杂性低,代码容易理解,但是开发效率不高。ASP.NET则较为复杂,但是具有相应的框架,程序设计快速且思路清晰www.zgxue.com防采集请勿采集本网。

Intro#

ASP和asp.net的区别从编程语言种类,服务器,硬件环境的这三方面看区别,其中编程语言种类的区别是最主要的。第一,从编程语言种类看区别。ASP用VBScript、JavaScript等简单容易的脚本语言。结合

上次更新了 asp.net core 3.0 简单的记录了一下 swagger 的使用,那个项目的 api 比较简单,都是匿名接口不涉及到认证以及 api 版本控制,最近把另外一个 api 项目升级到了 3.0,还是遇到了一些问题,这里单独写一篇文章介绍,避免踩坑。

ASP.Net是什么 1 ASP.Net是什么?ASP.Net是建立在微软新一代.Net平台架构上,利用普通语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架。2.

Swagger 基本使用#

分析你的问题,你所谓C#.net大概是指在.net平台下使用C#做开发,这个说法就包括了在.net平台下用C#做B/S模式开发也就是包括Asp.net开发。C#只是一种开发语言,而.net是一个开发和用户体验环境。

swagger 服务注册:

asp.net 不是语言也不是数据库,asp和asp.net都是一门技术,asp是老的,asp.net是微软推出的新的技术,注意,是技术,不是语言。asp.net用的语言是C#,用的框架是.Net框架,以上是程序开发的技术

services.AddSwaggerGen(option => { option.SwaggerDoc("sparktodo", new OpenApiInfo { Version = "v1", Title = "SparkTodo API", Description = "API for SparkTodo", Contact = new OpenApiContact() { Name = "WeihanLi", Email = "weihanli@outlook.com" } }); // include document file option.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, $"{typeof(Startup).Assembly.GetName().Name}.xml"), true); });

ASP和ASP.NET是2个不同的东西,只是它们都是微软的,在IIS上可以很好的支持,所以可以混用在一起。ASP是解释型语言,在执行效率上不高,属于过期技术,但网上的源码不少,在开发低成本小网站上

中间件配置:

//Enable middleware to serve generated Swagger as a JSON endpoint.app.UseSwagger();//Enable middleware to serve swagger-ui (HTML, JS, CSS etc.), specifying the Swagger JSON endpointapp.UseSwaggerUI(option =>{ option.SwaggerEndpoint("/swagger/sparktodo/swagger.json", "sparktodo Docs"); option.RoutePrefix = string.Empty; option.DocumentTitle = "SparkTodo API";});

为 Swagger 添加 Bearer Token 认证#

services.AddSwaggerGen(option =>{ // ... // Add security definitions option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme() { Description = "Please enter into field the word 'Bearer' followed by a space and the JWT value", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey, }); option.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference() { Id = "Bearer", Type = ReferenceType.SecurityScheme } }, Array.Empty<string>() } });});

支持多个 ApiVersion#

services.AddApiVersioning(options => { options.AssumeDefaultVersionWhenUnspecified = true; options.DefaultApiVersion = ApiVersion.Default; options.ReportApiVersions = true; });services.AddSwaggerGen(option =>{ // ... option.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "API V1" }); option.SwaggerDoc("v2", new OpenApiInfo { Version = "v2", Title = "API V2" }); option.DocInclusionPredicate((docName, apiDesc) => { var versions = apiDesc.CustomAttributes() .OfType<ApiVersionAttribute>() .SelectMany(attr => attr.Versions); return versions.Any(v => $"v{v.ToString()}" == docName); }); option.OperationFilter<RemoveVersionParameterOperationFilter>(); option.DocumentFilter<SetVersionInPathDocumentFilter>();});

自定义 Api version 相关的 OperationFilter:

public class SetVersionInPathDocumentFilter : IDocumentFilter{ public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context) { var updatedPaths = new OpenApiPaths(); foreach (var entry in swaggerDoc.Paths) { updatedPaths.Add( entry.Key.Replace("v{version}", swaggerDoc.Info.Version), entry.Value); } swaggerDoc.Paths = updatedPaths; }}public class RemoveVersionParameterOperationFilter : IOperationFilter{ public void Apply(OpenApiOperation operation, OperationFilterContext context) { // Remove version parameter from all Operations var versionParameter = operation.Parameters.Single(p => p.Name == "version"); operation.Parameters.Remove(versionParameter); }}

中间件配置:

//Enable middleware to serve generated Swagger as a JSON endpoint.app.UseSwagger();//Enable middleware to serve swagger-ui (HTML, JS, CSS etc.), specifying the Swagger JSON endpointapp.UseSwaggerUI(option =>{ option.SwaggerEndpoint("/swagger/v2/swagger.json", "V2 Docs"); option.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); option.RoutePrefix = string.Empty; option.DocumentTitle = "SparkTodo API";});

最终 swagger 效果

Memo#

上面的配置来自 https://github.com/WeihanLi/SparkTodo 这个项目,要获取代码可以参考这个项目

Reference#

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/tree/master/test/WebSites/MultipleVersions/Swagger https://stackoverflow.com/questions/58197244/swaggerui-with-netcore-3-0-bearer-token-authorization https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1295 https://github.com/WeihanLi/SparkTodo

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对真格学网的支持。

分析:ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应用程序和Web服务的技术。ASP.NET页在服务器上执行,并生成发送到桌面或浏览器的标记(如HTML、XML或者WML)。可以使用任何.NET兼容语言(比如Visual Basic、C#)编写Web服务文件中的服务器端(而不是客户端)逻辑。ASP.NET页使用一种由事件驱动的、已编译的编程模型,这种模型可以提高性能并支持将用户界面层同应用程序逻辑层相隔离。注意:Web应用程序和Web服务可调用公共语言运行库的任意功能,例如类型安全、继承、语言互操作、版本控制和集成安全性等。ASP.NET技术有几个显著的特性,既:1、强大性和适应性 因为ASP.NET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在支持.NET Framework所有平台上。ASP.NET同时也是language-independent语言独立化的,所以,可以选择一种最适合自己的语言来编写应用程序,或者可以用多种语言来写应用程序,这样的多种程序语言协同工作的能力可以保护基于COM+开发的程序,并能够完整的移植向ASP.NET。2、简单性和易学性.NET Framework封装了大量的类库,使ASP.NET完成一些常见的任务如表单的提交、客户端的身份验证、分布系统,并可以使网站配置变得非常简单。3、高效可管理性 ASP.NET使用一种字符基础的、分级的配置系统,使服务器环境和应用程序的设置更加简单。ASP.NET已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,可以很大的提高运行速度。即使现在的ASP.NET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高运行效能。总结:ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应用程序和Web服务的技术,利用公共语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net core webapi 使用swagger生成帮助页实例
  • .net core2.1 webapi新增swagger插件详解
  • .net core利用swagger进行api接口文档管理的方法详解
  • asp.net core webapi使用swagger时api隐藏和分组详解
  • 记asp.net core swagger使用并带域接口处理的方法
  • asp.net中显示1至20相同数字相乘的结果,若值比50小就不显示
  • 获取创建membership的数据库创建脚本
  • c#中常用的分页存储过程小结
  • 为asp.net mvc及webapi添加路由优先级
  • asp.net(c#) web api通过文件流下载文件的实例
  • win10 iis 安装.net 4.5的方法
  • 某个aspx页面突然死了连日志也没有的解决方法
  • asp.net中application全局对象用法实例浅析
  • visual studio 2017创建简单控制台程序
  • vs2008 安装失败的总结与分享
  • ASP.NET是什么
  • ASP.NET和ASP的区别是什么?
  • .Net 和ASP.Net 有什么区别呢?
  • asp.net是什么?
  • ASP和asp.net有什么区别的呢?最主要的区别是什么呢?
  • ASP NET 是什么?
  • asp.net与.net的区别
  • asp.net有什么用,主要是做什么的?
  • .net和asp的区别
  • asp.net中与的区别?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧asp.net core webapi 使用swagger生成帮助页实例.net core2.1 webapi新增swagger插件详解.net core利用swagger进行api接口文档管理的方法详解asp.net core webapi使用swagger时api隐藏和分组详解记asp.net core swagger使用并带域接口处理的方法asp.net中显示1至20相同数字相乘的结果,若值比50小就不显示获取创建membership的数据库创建脚本c#中常用的分页存储过程小结为asp.net mvc及webapi添加路由优先级asp.net(c#) web api通过文件流下载文件的实例win10 iis 安装.net 4.5的方法某个aspx页面突然死了连日志也没有的解决方法asp.net中application全局对象用法实例浅析visual studio 2017创建简单控制台程序vs2008 安装失败的总结与分享java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net汉字转拼音和获取汉字首字asp.net对路径"xxxxx"asp.net中list的使用方法asp.net中获取远程网页的内容之一(downm关于listview下隐藏控件的解决方案分享剖析asp.net web api路由系统---webhost部asp.net程序发布详细过程解析xhtml源码的dll组件anglesharp介绍php基础练习--简单验证码实现asp.net在mvc中maxlength特性设置无效的解dhtmlxgrid 添加行号详细步骤asp.net mvc5添加验证(4)
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved