问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么将json文件渲染到swagger-ui上面

发布网友 发布时间:2022-04-26 09:46

我来回答

2个回答

懂视网 时间:2022-04-27 12:51

前言

   随着前后端分离开发模式的普及,后端人员更多是编写服务端API接口。调用接口实现文件上传是一个常见的功能,同时也需要一个选择文件上传的界面,可以编写前端界面上传,可以使用Postman、curl来模拟上传请求。上述的方式多多少少有点麻烦。Swagger作为Api说明文档及调试工具,如果它能提供文件上传的界面(默认不提供),那会更加方便文件上传提示,本文将介绍如何使用Swagger来上传文件。

步骤

1. 安装Swagger

Install-Package Swashbuckle.AspNetCore

2. 配置Swagger中间件

在Startup.ConfigureServices中添加:

services.AddSwaggerGen(c =>
{
 c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

在Startup.Configure中添加:

app.UseSwagger();
app.UseSwaggerUI(c =>
{
 c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});

3. 编写API

// POST api/values
[HttpPost]
public void Post(IFormFile file)
{
 //TODO:Save file...
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, IFormFile file)
{
 //TODO:Save file...
}

4. 编写SwaggerFileUploadFilter

public class SwaggerFileUploadFilter : IOperationFilter
{
 public void Apply(Operation operation, OperationFilterContext context)
 {
 if (!context.ApiDescription.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase) &&
 !context.ApiDescription.HttpMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase))
 {
 return;
 }
 var fileParameters = context.ApiDescription.ActionDescriptor.Parameters.Where(n => n.ParameterType == typeof(IFormFile)).ToList();
 if (fileParameters.Count < 0)
 {
 return;
 }
 operation.Consumes.Add("multipart/form-data");
 foreach (var fileParameter in fileParameters)
 {
 var parameter = operation.Parameters.Single(n => n.Name == fileParameter.Name);
 operation.Parameters.Remove(parameter);
 operation.Parameters.Add(new NonBodyParameter
 {
 Name = parameter.Name,
 In = "formData",
 Description = parameter.Description,
 Required = parameter.Required,
 Type = "file"
 });
 }
 }
}

5. 注册SwaggerFileUploadFilter

c.OperationFilter<SwaggerFileUploadFilter>();

6. 查看结果

POST方法:

PUT方法:

原理解析

  使用Swagger的文件上传的关键在于SwaggerFileUploadFilter,它继承于Swashbuckle的IOperationFilter,也即它只作用于Swagger,不会对其它模块造成影响。

  我们再来看一下SwaggerFileUploadFilter里面的Apply方法的逻辑:

  1. 判断请求的方法是否为POST或者PUT,如果是其它请求方法,基本不可能是文件上传操作。

  2. 查找方法中类型为IFormFile的参数。

  3. 设置Consumes为“multipart/form-data”。

  4. 替换IFormFile类型参数描述中的In为formData、Type为File。

源码地址

https://github.com/ErikXu/.NetCoreTips/tree/master/SwaggerFileUpload

参考资料

http://www.talkingdotnet.com/how-to-upload-file-via-swagger-in-asp-net-core-web-api/

总结

以上所述是小编给大家介绍的如何使用Swagger上传文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

热心网友 时间:2022-04-27 09:59

Vue中computed就是 实时计算 使用。 Vue检测到数据发生变动时就会执行对相应数据有引用的函数。 下面是一个demo。引用自己的vue.js就可以看效果。 利用computed可以做一些监控之类的效果。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
计算机等级考试有什么条件 全国计算机等级考试(ncre),这个大学毕业了之后可以考吗? 计算机等级考试有年龄限制吗? ...的数据叫做这组数据的___,众数能够反映一组数据的___情况 众众数能够反映一组数据的集中情况. 众数能反映一组数据的___情况. 什么能够反映一组数据的集中趋势;什么应用最广泛,能够充分地反映这组... 众数能够反映一组数据的___情况.在一组数据中,___可能不止一个,也... 众数能够反映一组数据的 ___ 情况.在一组数据中, ___ 可能不止一个,也... 众数能够反映一组数据的集中情况,平均数能准确地评价一组数据的整体情况... python初始化swagger在linux环境报错,windows下正常 如何在swagger ui 中发布api swagger api 怎么导入到postman swagger文件上传显示却是query类型 电脑为什么突然黑屏不过没有关机 酸菜焖猪肉的做法 为什么我电脑总是黑屏但没关机 电脑没关机 过了一阵黑屏了 然后就开不了机了 是咋回事? 职高也就是中专的计算机专业能考什么大学? 内蒙古职业高中毕业,可以考哪些大学 职高能考什么大学?有哪些大学可以报考? 职高能考什么大学吗?最起码得大专 高职高考能考什么大学? 职业高中可以考哪些大学? 当教师的前景如何? 教师行业的发展前景怎么样? 求微光望远镜的原理结构图,越详细越好!我满意了还给加分! 近几年教师的就业形势情况如何? 望远镜的原理和图纸 2020教师就业前景和就业分析 第三方平台申请的zec钱包地址是永久的吗 怎么撤销拼多多开场白机器人设置 zec自家电脑能挖矿吗 swagger 能不能支持多数据源的接口 长沙矿工挖ZEC,不够0.1个传不到钱包,电脑重启了会怎么样 spring mvc swagger no operations defined in spec,怎么解决 拼多多商家回复超时的如何删除 如何验证imtoken钱 拼多多后台回复信息没有笑脸图怎么回事 蚂蚁矿工怎么绑定钱包地址 多多评价如何自动回复 拼多多里面修改自动回复,显示请输入3个字以上的文案是怎么回事? 拼多多看视频有消息怎么回复 拼多多商家自动回复机器人使用教程? 搜狐网站都有什么功能? Sohu搜索引擎有什么特点? 新浪、搜狐、网易还有腾讯,这些国内IT门户属于什么类型的网站?它们的主要功能和特点是什么? 中国三大门户网站为什么没有腾讯 门户网站与普通网站的区别是什么? 百度和google和搜狐的不同和优缺点