使用最小 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日

相关文章

  • PHP中使用协同程序实现合作多任务第1/2页

    下面是详细的攻略说明: 什么是PHP中的协程? 协程是一种轻量级的线程,它可以看做是纤程(用户态线程)的一种。协程具有以下特点: 协程是用户态线程,不需要进行线程上下文切换,因此执行效率很高。 协程可以在运行过程中暂停执行,然后再继续执行,很适合用来实现异步非阻塞的代码。 多个协程之间可以合作,实现复杂的任务调度。 如何使用PHP实现协程? 在PHP5.5之…

    云计算 2023年5月18日
    00
  • 云计算的一些名词

    云计算的目标是:按需服务,提供的服务可以是基础设施,也可以是平台,也可以是软件,即: 公共云服务一般来说包括:IaaS、PaaS、SaaS 三类服务。 即:Infrastructure(基础设施)-as-a- Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Service。 如下图:     IaaS是…

    2023年4月10日
    00
  • 云计算 kvm 虚拟化 简单介绍

    云计算是什么 一种网络资源的使用模式具有弹性计算,按需付费,快速扩展的特点 云计算的分类 私有云     在自建机房,内部使用。(安全、机密) 公有云    使用云提供商提供的服务。(方便、快捷、免维护) 混合云    上述两者都用 云的解决方案 IAAS(基础设施即服务) 网络、存储、虚拟化资源都不需要关心,只负责操作系统以上的东西 使用案例   open…

    2023年4月10日
    00
  • ASP.NET Core实现自定义WebApi模型验证详解

    下面我将详细讲解“ASP.NET Core实现自定义WebApi模型验证”的完整攻略,过程中会包含两个示例。 1. 什么是ASP.NET Core模型验证 ASP.NET Core模型验证是用于验证传输到WebApi中的请求体或URL参数的数据是否符合应用程序中设定的数据模型。当数据验证失败时,ASP.NET Core会返回非200的状态码及一条错误信息。 …

    云计算 2023年5月17日
    00
  • 分布式边缘容器项目 SuperEdge v0.7.0 版本来袭!

    作者 SuperEdge 开发者团队,腾讯云容器中心TKE Edge团队 摘要 SuperEdge是基于原生Kubernetes的分布式边缘云容器管理系统,由腾讯云牵头,联合英特尔、VMware威睿、虎牙、寒武纪、美团、首都在线等多家厂商在2020年12月共同发起的边缘计算开源项目,旨在将把Kubernetes强大的容器管理能力无缝的扩展到边缘计算和分布式资…

    云计算 2023年4月11日
    00
  • Asp.Net Core中发送Email的完整步骤

    下面是关于”Asp.Net Core中发送Email的完整步骤”的攻略,包含两个示例说明。 简介 在Asp.Net Core中,我们可以使用SMTP协议来发送电子邮件。在本攻略中,我们将介绍如何在Asp.Net Core中发送电子邮件,包括配置SMTP服务器、创建邮件模板、发送邮件等步骤。 步骤 在Asp.Net Core中,我们可以通过以下步骤来发送电子邮…

    云计算 2023年5月16日
    00
  • Python数据库编程之pymysql详解

    Python数据库编程之pymysql详解 什么是pymysql pymysql是Python语言上的一个Mysql数据库接口,它遵循Python数据库API v2.0规范,使用方式与Python内置的sqlite3、PostgreSQL数据库上的psycopg2等类似。pymysql具有易用性、模块化、线程安全和SQL注入安全等优点,在使用Python进行…

    云计算 2023年5月18日
    00
  • 什么是大数据计算服务MaxCompute – 阿里云物联网之家

    什么是大数据计算服务MaxCompute 2019-08-06 18:15 阿里云物联网之家 阅读(608) 评论(0) 编辑 收藏 举报 大数据计算服务(MaxCompute,原名ODPS)是一种快速、完全托管的EB级数据仓库解决方案。 当今社会数据收集手段不断丰富,行业数据大量积累,数据规模已增长到了传统软件行业无法承载的海量数据(百TB、PB、EB)级…

    云计算 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部