3 votes

L'API avec une chaîne de requête facultative perd la valeur de la route

Je veux avoir un chemin WebAPI qui prend un Id, mais aussi, une requête facultative.

Donc, habituellement, le client enverra :

http://localhost:49487/api/template/5b31b31c-ecd9-4e7a-bcdb-1c263399c86f

Mais parfois, j'ai besoin de renvoyer un peu plus de détails dans la charge utile. Je veux donc qu'ils envoient :

http://localhost:49487/api/template/5b31b31c-ecd9-4e7a-bcdb-1c263399c86f?IncludePreview=true

Mon endpoint .Net Web API Controller est défini comme ceci, et gère le premier cas.

[Route("{Id}"), HttpGet]
public IActionResult GetTemplate(Guid Id, bool IncludePreview = false)

Mais dès que j'ai envoyé la deuxième version, avec la chaîne de requête, le contrôleur de l'API s'exécute (j'ai un point d'arrêt dessus), mais l'Id est toujours Guid.Empty.

Comment puis-je faire en sorte que ma méthode API accepte les deux versions ? Ou dois-je créer un endpoint séparé pour les deux versions ?

3voto

bOna Points 46

Vous attribuez la valeur booléenne de l'aperçu inclus en tant que valeur fixe. Donc même si votre appel attrape IncludePreview=true dans la méthode GetTemplate, il sera réassigné. Veuillez essayer d'utiliser un type booléen nullable avec 'null' comme valeur attribuée.

public IActionResult GetTemplate(Guid Id, bool? IncludePreview=null)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X