Web-API-routing-Aktionen
Ziel ist es, diese vier Endpunkte:
POST v1/invoices<br/>
POST v1/invoices/12345<br/>
POST v1/invoices/12345/attachment<br/>
POST v1/invoices/12345/image
Routing-Einträge:
routes.MapHttpRoute(
name: "InvoiceAttachments",
routeTemplate: "v1/invoices/{id}/attachments",
defaults: new { controller = "invoices", action = "PostAttachment" }
);
routes.MapHttpRoute(
name: "InvoiceImages",
routeTemplate: "v1/invoices/{id}/images",
defaults: new { controller = "invoices", action = "PostImage" }
);
Diese sind meine vier Funktions-Definitionen in der Steuerung:
[HttpPost]
[ActionName("PostAttachment")]
public HttpResponseMessage PostAttachment(int id)
[HttpPost]
[ActionName("PostImage")]
public HttpResponseMessage PostImage(int id)
[HttpPost]
public HttpResponseMessage Post(int id)
[HttpPost]
public HttpResponseMessage Post()
Aber wenn ich die post eine Rechnung über die erste URI, für die Strecke, wird erkannt, ist die Anlagen-route. Wie kann ich die endpoints mit verschiedenen Abschnitten, nachdem die ID-variable?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab!
Route:
Funktion Definitionen:
Funktioniert perfekt. Beachten Sie, dass in der route, die ich angegeben eine Standard-Aktion von "" wegen eines Fehlers in der webAPI-routing mit Platzhaltern. Hatte ich nicht getan, der Standard, wird eine null-Verweis-Ausnahme würde haben geworfen worden. Mehr Informationen über den defekt kann hier gefunden werden: http://aspnetwebstack.codeplex.com/workitem/718 - voraussichtlich behoben sein ASP.NET v5.
Vielen Dank für Ihre Hilfe!
Denke ich, müssen Sie eine andere route definiert, weil die erste URI sollte nicht sein, passend zu den InvoiceAttachments route, weil es nicht "/attachments" am Ende
Versuchen, mit einer einzigen route
Dann schmücken Funktionen wie
Post(int id)
- ansonsten wirst du nie bekommen eine id übergeben...Haben Sie versucht, mit Einschränkungen anstatt defaults?
UPDATE:
Könnte man wohl eine Art hack, indem Sie die Aktion, die die url-Teil:
und die controller-Methoden: