Dans mon contrôleur, il y a une méthode take accepte une route et un paramètre de requête comme arguments:

/// <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 
}

Dans OpenApi.json / Swagger généré à partir de cette signature via Swashbuckle XML, le routeParameter (chemin) est toujours requis mais le queryParameter (requête) est marqué comme facultatif.

Comment puis-je également marquer le paramètre de requête comme requis?

0
konstantin 26 août 2020 à 14:29

2 réponses

Meilleure réponse

Comment puis-je également marquer le paramètre de requête comme requis?

Utilisez simplement [FromQuery, BindRequired] comme suit:

[HttpPost("somePath/{routeParameter}")]
public IActionResult MyMethod([FromRoute] string routeParameter, [FromQuery, BindRequired] DateTime queryParamter)
{
    // do something  
}

Voici le résultat du test:

enter image description here

1
konstantin 27 août 2020 à 18:03

Voici une alternative avec [FromUri] pour recevoir vos paramètres

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

QueryParam.cs

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

Interface utilisateur Swagger

enter image description here

0
awais 26 août 2020 à 11:48