mit der Web-API-Attribut-routing und RoutePrefix
Bei der Verwendung von web-api, wie nennt man das korrekte routing-Methoden, wenn Sie [RoutePrefix()]
Sagen, Sie haben so etwas wie "MyReallyLongNamedClassController". die Standard-route wäre http:...com/api/MyReallyLongNamedClass. Die Anwendung geht dann durch Methoden namens Get, Post, Put, etc (außer natürlich mit verb Dekorateure).
Wenn ich eine route Präfix Dekorator [RoutePrefix("api/LongClass")]
auf meinem controller, wie kann ich web-api weiterhin verwenden die Standardeinstellungen für die Methoden?
Bedeutung, will ich die Methode mit dem Namen "GetAll()" noch anzeigen für "api/LongClass" (wenn ein get-header) und "PostThis(int id)" noch anzeigen für "api/LongClass/{id}" (wenn Sie eine post-header)
InformationsquelleAutor Benji | 2015-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist was ich getan habe um das problem zu lösen, ohne zu schmücken alle Methoden mit Annotationen. Ich legte RoutePrefix in der Klasse, sowie die default-Route
InformationsquelleAutor Benji
Andere Möglichkeit: wenn alles, was Sie tun möchten, ist ändern Sie den controller-Namen in der route, können Sie erstellen eine benutzerdefinierte controller-Auswahl:
Dann können Sie sich registrieren und die controller-Auswahl in Ihrem
WebApiConfig.Register
:Dies hat den Vorteil, dass Sie Ihre bereits zugeordneten Strecken (definiert mit
HttpRouteCollection.MapHttpRoute()
) anstelle der Verwendung von Attribut-routing. Allerdings, wenn Sie müssen, verwenden Sie Attribut-routing für anderen Gründen auch immer, dann ist deine Lösung wahrscheinlich besser.InformationsquelleAutor AJ Richardson
Brauchen Sie sich keine sorgen darüber, wie die RoutePrefix Attribut intern arbeitet. Sie können dekorieren entweder mit dem controller oder Aktionen mit RoutePrefix und nennen können, die Handlungen in übereinstimmung mit Ihren Einstellungen. Sie haben die
Route
atribute in Ihren Handlungen, um für[RoutePrefix]
um richtig zu arbeiten.Beispielsweise die in der nachstehenden controller, alle
GET
Anforderungen an urlapi/longclass/get
ruft dieGetAll
Methode und allePOST
Anforderungen anapi/longclass/post
ruftPostThis
Überprüfen Sie bitte meine aktualisierte Antwort.
Während ich habe nicht versucht deine Lösung zu sehen, ob es funktioniert, habe ich eine andere Lösung finden, die funktioniert.Ich legte [RoutePrefix api ("/LongClass")] und [Route("{id?}")] auf der controller-Ebene
InformationsquelleAutor su8898