Web API optionale Parameter

Ich habe einen Controller mit der folgenden Signatur:

[Route("products/filter/{apc=apc}/{xpc=xpc}/{sku=sku}")]
public IHttpActionResult Get(string apc, string xpc, int? sku)
{ ... }

Ich rufe diese Methode mit folgenden URIs auf:

~ / api / products / filter? apc = AA & xpc = BB ~ / api / products / filter? sku = 7199123

Die erste URI funktioniert ohne Probleme. Der zweite hat eine seltsame Nebenwirkung. Auch wenn die Standardwerte für apc und xpc null sein sollten, wenn sie nicht angegeben werden, handelt es sich bei den Parametern tatsächlich um deren Namen. Ich kann das überwinden, indem ich die zusätzliche Logik hinzufüge:

apc = (apc == "apc") ? null : apc;
xpc = (xpc == "xpc") ? null : xpc;

Dies scheint ein Hack zu sein und wäre problematisch, wenn der übergebene Wert jemals mit dem Parameternamen übereinstimmen würde.

Gibt es eine Möglichkeit, die Route ohne diesen Nebeneffekt zu definieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage