WebApi-Routen mit derselben RouteTemplate mit Versionsbeschränkung

8

Ich baue eine API mit WebAPI. Worauf ich schießen möchte, ist das Erstellen einer externen Bibliothek pro Version der API, die die WebAPI-Anwendung bei der Registrierung ihrer Routen in WebApiConfig

abfragen wird

Beispiel: Api.v1 und Api.v2

Sie werden ähnliche Funktionen teilen, aber basierend auf version , die in der Kopfzeile übergeben wurden, wird die richtige API Version gewählt:

/{controller}/{action} - HTTP-HEADER: version=1 entspricht Api.v1.Controller/Action

/{controller}/{action} - HTTP-HEADER: version=2 entspricht Api.v2.Controller/Action

Ziel ist es, das Voranstellen von /{ver}/{controller}/{action} zu vermeiden. Ich weiß, dass routeTemplates mit dem gleichen Wert nicht unterstützt wird, aber ich dachte, ich könnte die Route an einen bestimmten Namespace binden, und eine Constraint könnte dabei helfen, die Übereinstimmung zu finden:

%Vor% %Vor%

Es hat auch nicht geholfen, den namespaces für jede Route zu injizieren. Die Eigenschaft DataTokens ist null und schreibgeschützt.

Irgendeine Idee, wie ich das mache, was ich tue? Gibt es eine Möglichkeit, die gleiche Route zu verschiedenen Controllern mit demselben Namen, aber mit unterschiedlicher Funktionalität und Namespace zuzuordnen?

    
hunter 18.10.2012, 16:27
quelle

2 Antworten

8

Sehen Sie sich Versioning ASP an .NET-Web-API-Dienste, die HTTP-Header verwenden , scheint dies Ihre Frage zu beantworten, wie Sie auf der Basis von HTTP-Headern routen.

Sie ersetzen den Standard-Controller-Selektor durch einen benutzerdefinierten IHttpControllerSelector wählt den richtigen Controller anhand des HTTP-Headers aus.

    
Oppositional 18.10.2012, 17:12
quelle
0

ASP.NET-Web-API: Verwenden von Namespaces zur Version von Web-APIs Ссылка

    
Mircea Ion 18.09.2014 19:37
quelle