ASP.NET Core:根据需要标记[FromQuery]参数

问题描述

在我的控制器中,有一种方法接受一个路由和一个查询参数作为参数:

/// <summary>
/// My Method
/// </summary>
/// <param name="routeParameter">Nice description of route parameter.</param>
/// <param name="queryParameter">Nice description of query paramter.</param>
[HttpPost("somePath/{routeParameter}")]
public IActionResult MyMethod([FromRoute] string routeParameter,[FromQuery] DateTime queryParamter)
{
   // do something 
}

在通过Swashbuckle XML从此签名生成的OpenApi.json / Swagger中,始终需要routeParameter(路径),但是queryParameter(查询)被标记为可选。

我如何也可以根据需要标记查询参数?

解决方法

我如何也将查询参数标记为必需?

只需使用 [FromQuery,BindRequired] ,如下所示:

SpringApplication

这是测试结果:

enter image description here

,

这里是[FromUri]的替代方法,用于接收您的参数

[HttpPost("somePath")]
public IActionResult MyMethod([FromUri] Paging paging,[FromUri] QueryParam param)
{
   // do something 
}

QueryParam.cs

public class QueryParam
{
    [Required]
    public string routeParameter{ get; set; }
}

Swagger用户界面

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...