Hallo Jungs, ich bin neu zu Routing-Attribute und nicht sicher, ob das überhaupt möglich ist.Mehrere optionale Parameter Web-Api-Attribut-Routing
Was ich habe, ist ein Attribut Route, die fein wie diese jetzt
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag)
arbeitet aber ich einige zusätzliche optionale Parameter hinzufügen möchte, dass meine Suche verengen, so möchte ich 2 zusätzliche optionale Parameter hinzuzufügen.
, was ich versucht habe:
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3?}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)
Dies funktioniert gut, wenn mein Anruf /api/controller/1/2
ist aber nicht mit 404, wenn es um /api/controller/1
kommt
Wie ich dies erreichen kann?
Edit 1: Die Antwort von Nkosi funktionierte, aber eine zusätzliche Modifikation wurde benötigt.
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}/{tagIds?}/{categoryId:int?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , List<int> tagIds, int? categoryId = null)
Die Liste oder Array muss Sekunde sein, da sie automatisch null ist, wenn kein Wert angegeben wird, und kann nicht als optional mit = null
'{Flag: Int = 3?}' ist das Problem. Es ist entweder optional '{flag: int?}' mit dem Standardwert in der Aktion oder '{flag: int = 3}'. Sie haben derzeit 3 optionale Parameter. wenn Sie nur die 1-Wert-Routing-Tabelle nicht wissen, welche optionale Parameter, die Sie beziehen sich auf die 404 – Nkosi
Nikosis Antwort für mich gearbeitet! Nun, die erste, nicht die Spaltung, entfernt, dass alles funktioniert jetzt gut – Harry
ersten (die Option von Flag optional entfernen) können Sie es auf Antworten aktualisieren, damit ich als richtig markieren kann? – Harry