我的.net api签名如下:
[HttpPost]
public async Task<ActionResult<ServiceResult>> SendEmail([FromForm]SendEmailModel model)
下面是我的 swagger 配置:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "App-Service"
});
});
.
.
.
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.DocumentTitle = "App Service";
c.SwaggerEndpoint("/swagger/v1/swagger.json", "App Service");
});
app.UseMvc();
它生成如下内容:
但是当我执行它时,To
参数发送为
[
"\"1\",\"2\",\"3\""
]
但必须是:
[
"1", "2", "3"
]
我该如何解决?
最佳答案
最好像Vinit Patel说的那样把contract改成[FromBody]。但是,如果这不是一个选项,您将不得不像这样对您的 SendEmailModel 模型做一些骇人听闻的事情:
[HttpPost]
public async Task<ActionResult<ServiceResult>> SendEmail([FromForm]SendEmailModel model)
{
model.To = Regex.Replace(model.To.FirstOrDefault(), "\"", string.Empty)
.Split(",", StringSplitOptions.None);
//now you can loop through model.To as a string array
foreach (string toEmail in model.To)
{
// Your logic here
}
...
}
这可能不是最好的解决方案,但我希望它能有所帮助:)
关于c# - 在 swagger C# .net 核心中使用 FormData 发送字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56542429/