什么是斯瓦格?
swag的目标是为REST APIs定义一个标准的、独立于语言的接口,这样人和计算机就可以发现和理解各种服务的功能,而无需看到源代码、文档或网络流量检测。当服务由Swagger定义时,消费者可以通过少量的实现逻辑与远程服务进行交互。与低级编程接口类似,Swagger在调用服务时消除了许多猜测。
背景
swag不仅提供了自动实现接口文档的指令,还支持页面调试,告别postman等工具,无需开发人员手动编写api文档,降低开发成本得到了大家的广泛认可。但是swag不提供上传文件的支持,只能由开发者自己实现。今天我们来看看如何扩展swag来满足上传文件的需求
移动你的小手
1开始昂首阔步
Nuget安装Swashbuckle。霸气组件
2设置生成xml
右键单击项目属性生成
相应地,根据上述步骤为需要生成文档描述的其他项目设置xml
按键霸气码
使用微软AspNetCore。建设者使用微软。扩展。配置;使用微软。扩展。依赖注射;使用微软。扩展。平台实践;使用Swashbuckle .AspNetCore。时髦的使用系统;使用系统。集合。通用;使用系统IO;使用系统Linq .使用系统。线程化。任务;命名空间乔斯.API。app _ Start {///summary///SwaggerConfig////summary公共类SwaggerConfig {///summary////init swage///summary///param name=' services '/param public static void init swage(IServiceCollection services){ services } .AddSwaggerGen(c={ c . operationfilterswaggerfile uploadfilter();//增加文件过滤处理var security=新字典字符串,IEnumerablestring { { }来人,新字符串[] { } },};c .添加安全性要求(安全性);//添加一个必须的全局安全信息,和添加安全性定义方法指定的方案名称要一致,这里是来人。var basePath=PlatformServices .默认值申请。应用程序基本路径;//获取到应用程序的根路径var xmlApiPath=路径组合(基本路径,Chaunce .API。XML ');//api文件xml(在以上步骤2设置生成可扩展标记语言的路径)var xmlModelPath=Path .Combine(basePath,' Chaunce .查看模型。XML ');//请求模型XML c . includexcmments(xmlaipath);c . includexcmments(xmlmmodelpath);c.SwaggerDoc('v1),新信息{ Title=' Chaunce '数据接口,版本='v1 ',描述='这是一个webapi接口文档说明,术语服务='无,联系人=新联系人{姓名='乔恩斯'官网,Email='[emailprotected]',Url='http://blog .Chaunce.top/' },许可证=新许可证{名称='斯瓦格官网,Url=' http://swag。io/',} });c . IgnoreObsoleteActions();c。添加安全性定义("承载者",新的ApiKeyScheme { Description='权限认证(数据将在请求头中进行传输)参数结构:"授权:承载{令牌}",名称="授权",//jwt默认的参数名称In='header ',//jwt默认存放批准信息的位置(请求头中)类型=' ApiKey ' });//授权的设置});}///summary////configureswag////summary///param name=' app '/param public static void configureswag(IApplicationBuilder app){ app .useswaggle();//启用中间件服务网页界面等。),指定斯瓦格数据端点应用程序.useswaggle(c={ c . Routetemplate=' docs/{ document name }/docs。JSON ';//使中间件服务生成时髦的作为数据端点(此处设置是生成接口文档信息,可以理解为老技术中的服务的肥皂协议的信息,暴露出接口信息的地方c .预粉碎过滤器。添加((swaggerDoc,httpReq)=swaggerDoc .信息描述=httpReq .路径);//请求过滤处理});应用程序.UseSwaggerUI(c={ c . RoutePrefix=' docs ';//设置文档首页根路径c . SwaggerEndpoint('/docs/v1/docs。JSON ',' V1 ';//此处配置要和使用霸气的RouteTemplate匹配//c . SwaggerEndpoint('/swag/v1/swag。JSON ',' V1 ';//默认终结点注射样式表('/swag-ui/custom。CSS ');//注入风格文件});} } }霸气过滤器
使用微软AspNetCore。超文本传送协议(Hyper Text Transport Protocol的缩写)使用Swashbuckle .AspNetCore。时髦的使用Swashbuckle .AspNetCore。SwaggerGen使用系统;使用系统。集合。通用;使用系统Linq .使用系统。线程化。任务;命名空间乔斯.API。帮助{///摘要///swag文件过滤器////摘要公共类swaggerfile uploadfilter : iooperationfilter {///摘要////赃物过滤器(此处的应用会被时髦的的每个接口都调用生成文档说明,所以在此处可以对每一个接口进行过滤操作)////summary////param name=' Operation '/param///param name=' context '/param public void Apply(Operation Operation,OperationFilterContext(!语境apdescription。httpmethod。等于(' POST '),字符串比较.普通案例)!语境apdescription。httpmethod。等于(' PUT '),字符串比较.ordinalignorcase)){ return;} var apiDescription=context .ApiDescriptionvar参数=上下文. API描述。参数描述。其中(n=n . Type==类型(iFOrmilecollection)| | n . Type==类型(ifile)).to list();//参数描述包含了每个接口所带所有参数信息如果(参数count()=0){ return;}操作。消耗。添加('多部分/表单数据');foreach(参数中的var文件参数){ var参数=操作.参数。单个(n=n .名称==文件参数。名称);手术。参数。删除(参数);手术。参数。添加(新的非数据库参数{名称=参数。名称,In='formData ',Description=参数。描述,必需=参数。必选,类型='file ',//CollectionFormat=' multi ' });} } } } }
打开浏览器http://localhost:8532/docs/
还没有结束,我们看看如何让智威汤逊广告公司的认证信息自动存在请求头免去每次手动塞
点击
(实际情况是填写的信息格式是:持有人*************(持有人与后面信息有一个空格))
此时随意访问任何api,都会将以上信息自动塞入页眉中进行请求,如下验证
至此目的都达到了
参考:
//www .JB 51。net/article/140105。html文件的后缀
https://github.com/domaindrivendev/Swashbuckle
总结
以上所述是小编给大家介绍的时髦的上传文件并支持智威汤逊广告公司认证的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!