使用最小 WEB API 实现文件上传的Swagger支持

使用最小 WEB API 实现文件上传的 Swagger 支持,需要完成以下步骤:

  1. 添加 Swagger 支持

Startup.cs 文件的 ConfigureServices 方法中,添加 Swagger 支持的代码:

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

Configure 方法中,启用 Swagger:

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1");
});
  1. 添加文件上传方法

添加文件上传方法的代码如下:

[HttpPost]
[Route("UploadFile")]
[Consumes("multipart/form-data")]
public async Task<IActionResult> UploadFile(IFormFile file)
{
    if (file != null && file.Length > 0)
    {
        var fileName = file.FileName;
        var filePath = Path.Combine(@"C:\Files\", fileName);
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
        return Ok(new { message = "File uploaded successfully!", fileUrl = filePath });
    }
    return BadRequest();
}
  1. 添加 Swagger 上传方法

ConfigureServices 方法中,添加上传文件的 Swagger 说明:

c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });

c.OperationFilter<AddFileParamTypesOperationFilter>();
c.OperationFilter<AddFileParamNameOperationFilter>();

SwaggerConfig.cs 文件中,添加 Swagger 上传文件的 Filters:

public class AddFileParamTypesOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, OperationFilterContext context)
    {
        if (operation.Parameters != null)
        {
            foreach (var parameter in operation.Parameters)
            {
                var parameterType = parameter.GetType();

                if (parameterType == typeof(NonBodyParameter) &&
                    parameter.In.Equals("formData", StringComparison.OrdinalIgnoreCase) &&
                    parameter.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
                {
                    parameter.Type = "file";
                    parameter.Format = null;
                    parameter.In = "formData";
                }
            }
        }
    }
}

public class AddFileParamNameOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, OperationFilterContext context)
    {
        if (operation.Parameters != null)
        {
            foreach (var parameter in operation.Parameters)
            {
                var parameterType = parameter.GetType();

                if (parameterType == typeof(NonBodyParameter) &&
                    parameter.In.Equals("formData", StringComparison.OrdinalIgnoreCase) &&
                    parameter.Type.Equals("file", StringComparison.OrdinalIgnoreCase))
                {
                    parameter.Name = "file";
                }
            }
        }
    }
}

示例1:

使用 POSTMAN 进行上传文件操作,

请求地址:https://localhost:5001/UploadFile
请求方式:POST
文件参数名:file
方法说明:上传指定文件到本地的 C:\Files 文件夹中,上传成功后返回 “File uploaded successfully!” 和文件路径。

示例2:

通过 Swagger 进行上传文件操作,

进入地址 https://localhost:5001/swagger/index.html
点击 API -> POST /UploadFile -> Try it out按钮
Choose Files下拉框中选择需要上传的文件
点击 Execute 按钮
上传成功后,点击 Response body 中的 Model 按钮,查看路径信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用最小 WEB API 实现文件上传的Swagger支持 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 基于云计算的SAAS商业模式类比研究

    本文讲的是基于云计算的SAAS商业模式类比研究,云计算是现在一个炙手可热的概念,而SAAS是云计算的重要组成部分。SAAS是企业走向信息化的重要途径,对其成功企业商业模式的研究可对即将走向SAAS的企业有着至关重要的参考作用。本文对当前典型的SAAS企业的商业模式做出描述与分析,分别分析了以软件超市著称的阿里软件,企业管理专家NETSUITE,以及对比了在线…

    云计算 2023年4月12日
    00
  • Python机器学习应用之工业蒸汽数据分析篇详解

    Python机器学习应用之工业蒸汽数据分析篇详解 介绍 本文主要介绍如何使用Python进行工业蒸汽数据分析,首先需要说明的是,如果是初学者,需要先学会Python基础和机器学习基础知识。本文将从以下几个方面进行讲解: 数据集介绍 数据预处理 特征工程 模型训练 模型评估 结论 数据集介绍 本文使用的数据集是Kaggle上的工业蒸汽数据,并将其下载到本地进行…

    云计算 2023年5月18日
    00
  • Windows系统下安装MongoDB并内网穿透远程连接

    下面给出详细讲解“Windows系统下安装MongoDB并内网穿透远程连接”的完整攻略,具体如下: 安装MongoDB 下载MongoDB安装程序,官网地址:https://www.mongodb.com/try/download/community?tck=docs_server 执行安装程序,按照提示进行安装(一路next即可),选择默认安装目录即可。 …

    云计算 2023年5月17日
    00
  • Eureka源码核心类预备知识

    Eureka源码核心类预备知识 Eureka是Netflix开源的一款服务发现框架,它可以帮助开发者实现服务的注册与发现。在使用Eureka时,需要了解一些Eureka源码核心类的预备知识。下面是一份关于Eureka源码核心类预备知识的完整攻略,包括背景介绍、Eureka源码核心类的预备知识、示例说明等。 1. 背景介绍 随着微服务架构的流行,服务的注册与发…

    云计算 2023年5月16日
    00
  • 大话云计算:群雄华山论剑,谁能笑傲江湖

    临近2017年末,云计算群雄纷纷聚集华山开始坐而论道,当然有时也唇枪舌剑。一时间,华山之巅“Cloud Computing”、“Cloud Native”、“Big Data”、“Data Center”、“Artificial Intelligence”、“OpenStack”、“Container”……等各种词汇不绝于耳。 与此同时,最新一期的云计算英雄…

    云计算 2023年4月12日
    00
  • 实现ECharts双Y轴左右刻度线一致的例子

    要想实现ECharts双Y轴左右刻度线一致,需要进行如下步骤: 1. 设置双Y轴的刻度最大值和最小值一致 首先,在ECharts图表的yAxis属性中,分别设置左右两个Y轴的min和max属性值相同,这样可以保证两个Y轴的范围一致,代码示例如下: yAxis: [ { type: ‘value’, name: ‘第一个Y轴’, min: 0, max: 10…

    云计算 2023年5月18日
    00
  • 微软云计算的三种运营模式 – 风清扬令狐冲

    微软云计算的三种运营模式 微软云计算拓展战略包括三大取向,即三种不同的云计算运营模式: 第一种,微软出资搭建,客户付费享用。微软正在全球范围内包括中国搭建统一的公共云服务平台,同时向各类企业、社会组织和个人消费者等客户提供云服务。   < wind_code_1 > 图一:微软云计算结构示意图   例如,微软向最终使用者提供的Online Ser…

    云计算 2023年4月11日
    00
  • 云计算openstack共享组件——Memcache 缓存系统

    一、缓存系统   静态web页面: 1、工作流程: 在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部