Personnaliser MapHttpAttributeRoutes pour le Web Api de gestion des versions
Je suis la mise en œuvre de l'API Web de gestion des versions comme dans L'API Web de gestion des versions. Mon contrôleurs sont dans 2 espaces de noms, et j'ai utilisé une coutume SelectController de la méthode à choisir la version à utiliser sur la base d'un paramètre de requête.
par exemple,
http://myapi/api/values?version=1.0
Tout cela fonctionne très bien mais certaines actions dans l'utilisation de contrôleurs de la Route attribut
[Route("api/values/getNames")]
public HttpResponseMessage Get() { ... }
Qui sont mappés à la bonne contrôleur par défaut à l'aide de
config.MapHttpAttributeRoutes();
dans WebApiConfig.cs
Cela ne fonctionnera pas si j'ai plusieurs versions de l'API avec le même itinéraire. Suis-je en mesure de fournir une implémentation personnalisée de config.MapHttpAttributeRoutes() pour que je puisse sélectionner la bonne version de l'API à utiliser, ou est-il une meilleure manière de faire ceci?
OriginalL'auteur nickela125 | 2014-08-14
Vous devez vous connecter pour publier un commentaire.
Il est un exemple de cela dans l'officiel WebApi 2.1 examplex sur Codeplex.
Il s'appuie sur un en-tête de requête de la valeur à stocker la version.
Je pense que c'est beaucoup plus agréable, car il permet à l'routes de rester le même pour toutes les versions. Les Clients de sélectionner la version simplement en incluant un en-tête HTTP de la requête (dans ce cas, le numéro de version).
...
De toute façon, le résultat final serait finir par ressembler à cela:
major-version.minor-version
ou une dateJe pense que vous pouvez régler de leur exemple pour utiliser un paramètre de requête au lieu de cela, dans le format que vous souhaitez.
OriginalL'auteur Marcel N.
Voici une solution qui vous permettra d'utiliser le Web API 2 chemin des versions d'itinéraires (en-têtes), en plus des paramètres de la requête de soutien (c'est à dire utiliser un en-tête appelé "api-version ou un paramètre de chaîne de requête nommée"?api-version=XXX'.
HTTP Route contrainte ne l'oeuvre:
Et de la route de l'usine:
Utilisation:
OriginalL'auteur Michael Brown