天天看点

.Net6基础功能封装分享3(swagger文档+跨域)

Knife4jUI集成

现在项目很多都是前后端分离的,这就涉及到前后端接口对接和联调,.net 6也支持swagger文档展示,但自带的swaggerUI太丑了,我这里集成了Knife4j的UI,先看效果图

.Net6基础功能封装分享3(swagger文档+跨域)

主页描述

.Net6基础功能封装分享3(swagger文档+跨域)

可以代码添加全局的授权请求头

.Net6基础功能封装分享3(swagger文档+跨域)

可以手动添加全局请求头

.Net6基础功能封装分享3(swagger文档+跨域)

可以下载离线文档

.Net6基础功能封装分享3(swagger文档+跨域)

接口参数描述

实现步骤

1.导入程序包Swashbuckle.AspNetCore(swagger封装)、IGeekFan.AspNetCore.Knife4jUI(第三方的swaggerUI)

.Net6基础功能封装分享3(swagger文档+跨域)

2.生成项目的注释的xml文档,打开项目的属性页面,生成-->输出

.Net6基础功能封装分享3(swagger文档+跨域)

3.增加IServiceCollection的扩展方法AddSwagger

.Net6基础功能封装分享3(swagger文档+跨域)

AddSwaggerExtension

注意:sg.OperationFilter<SwaggerFilter>();这句一定要带上;需要增加全局授权请求过滤器,否则调试时,请求头无法带上

.Net6基础功能封装分享3(swagger文档+跨域)

SwaggerFilter

4.增加WebApplication的扩展方法UseBaseSwaggerUI

.Net6基础功能封装分享3(swagger文档+跨域)

UseSwaggerUIExtension

5.在Program文件中调用封装的扩展方法来启用

.Net6基础功能封装分享3(swagger文档+跨域)

6.将launchSettings.json文件中的launchUrl设置为空字符串,启动项目后就可以看到效果了

跨域处理

跨域处理篇幅较短,就放在一起分享了。

跨域指的是从一个域名下去请求另外一个不同的域名下的资源,导致跨域的原因是浏览器的同源策略问题;.net 6中处理跨域也有几种方法,可以使用跨域中间件、过滤器等处理方式,本文使用的是过滤器的方式

实现步骤

1.创建跨域处理的过滤器,继承IAsyncActionFilter(异步动作过滤器),可以在Action方法前后插入处理方法

.Net6基础功能封装分享3(swagger文档+跨域)

CorsFilter

2.增加IServiceCollection的扩展方法UseCorsFilter

.Net6基础功能封装分享3(swagger文档+跨域)

AddCorsFilterExtension

全局注册后,每个Action方法都会执行

3.在Program文件中调用封装的扩展方法来启用

.Net6基础功能封装分享3(swagger文档+跨域)

继续阅读