【问题标题】:.NET Core Web API with Swagger: Post both a file AND data on the same call.NET Core Web API with Swagger:在同一个调用中同时发布文件和数据
【发布时间】:2020-03-24 12:25:21
【问题描述】:

我已经创建了一个 .NET Core 3.1 Web API,并且我使用 swagger 作为它的文档/预览。我既想上传文件,又想向 post call 发送很长的一些数据。我可以拨打 1 次电话来上传数据,这很有效。我可以再次调用来发送对象数据,这很有效。 但尝试将 2 组合在一起(通过使用 swagger 接口填写数据)永远不会命中该方法并给我错误:不支持的媒体类型。

    [HttpPost]
    [Route("Send")]
    public void Send(IFormFile file, Email emailInfo)
    {

    }

    [HttpPost]
    [Route("Test")]
    public void Test(IFormFile file)
    {

    }

    public class Email
    {
        public List<string> To { get; set; }
        public string Body { get; set; }
        public string Subject { get; set; }
        public IFormFile Files { get; set; }
    }

您可能注意到的一件事是在发送时我有 IFromFile 作为参数,但在电子邮件对象中也有 IFromFile。出于某种原因,为了让 Swagger 在参数中显示文件选择按钮,它需要在两个位置。

【问题讨论】:

    标签: swagger asp.net-core-webapi


    【解决方案1】:

    尝试使用 [From Query] 绑定:

        [HttpPost]
        [Route("Send")]
        public void Send([FromQuery] Email emailInfo)
        {
            var emailFromParam = emailInfo;
        }
    

    输入:

    显示参数值的调试输出:

    【讨论】:

      猜你喜欢
      • 2019-08-14
      • 2018-06-05
      • 2015-08-28
      • 2018-03-15
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多