Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 21930|Répondre: 1

[WebAPI] Définition de la propriété de routage de l’API web

[Copié le lien]
Publié sur 28/04/2018 10:37:11 | | | |
ASP.NET routage des API Web, en termes simples, consiste à mapper les requêtes clients aux actions correspondantes. Dans l’article « ASP.NET Web API Practice Series 03, Routings Templates, Routings Conventions, Routing Settings », j’ai expérimenté la définition de routes via des modèles, conventions et méthodes HTTP, et l’avantage de cette approche est que les modèles de routage sont placés uniformément dans la classe WebApiConfig sous le dossier App_Start, ce qui est pratique pour la gestion, mais l’inconvénient est qu’il n’est pas assez flexible.


REST considère tout comme une ressource, et parfois, une ressource avec des ressources enfants, comme Customer et Commandes, peut vouloir saisir une requête comme customers/1/orders, mais il est difficile d’atteindre cette voie uniquement par convention. En fait, ASP.NET API Web nous offre une fonctionnalité Route, qui peut être directement connectée à Action, très flexible et intuitive à utiliser.

Découvrons comment utiliser la fonction Itinéraire dans ASP.NET MVC4.

Autoriser l’attribut Route


D’abord, il faut le configurer dans WebApiConfig.



La méthode MapHttpAttributeRoutes ci-dessus n’est disponible que dans les versions plus récentes de ASP.NET API WebSi votre version est relativement faible, vous pouvez désinstaller l’ancienne version et installer la dernière version via la console NuGet Package Manager.


Ensuite, dans Global.asax, vous devez commenter la manière originale d’enregistrer WebApiConfig et adopter une nouvelle méthode, comme suit :

À ce moment-là, l’exécution du projet peut signaler l’erreur suivante :

C’est parce qu’en téléchargeant la dernière version de ASP.NET Web API, j’ai aussi téléchargé la dernière version d’icrosoft. AspNet.WebApi.HelpPage。 Vous pouvez désinstaller la dernière version de HelpPage et télécharger l’ancienne.

Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force
Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre


Utiliser la propriété Route

Créez une classe Cusomter.


Créez une classe d’Ordre.

Créez une classe Database pour obtenir la collection d’Ordres.



Créez un contrôleur d’API vide écrit ainsi :


Tapez ce qui suit dans votre navigateur :

Si vous utilisez ASP.NET MVC4 pour le développement, vous pouvez obtenir l’erreur suivante lors de la première exécution du programme :

[A] System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être diffusé vers [B]System.Web.WebPages.Razor.Configuration.HostSection. Le type A est dérivé de « System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35 » (dans « C :/Windows/Microsoft.Net/assembly/GAC_MSIL/ dans le contexte « Par défaut ») System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Le type B dérive de « System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35 » (dans le contexte « Par défaut » dans « C :/Windows/Microsoft.NET/Framework/v4.0.30319/ Fichiers de ASP.NET temporaires/vs/feb7ce97/a525d58a/asse


Cela s’explique par le fait que la dernière version de Razor est utilisée lors du téléchargement de la dernière version de l’API Web ASP.NET. Vous devez configurer la configuration suivante dans le répertoire racine de Web.config :


Utilisez la fonctionnalité RoutePrefix


Si vous souhaitez préfixer toutes les actions dans un contrôleur API, vous pouvez mettre la fonctionnalité RoutePrefix sur le contrôleur API.

Par exemple, nous voulons que ce soit dans un format comme celui-ci : http://localhost/api/customers/1/orders


Modifie l’OrdersController de cette manière.


Vous pouvez aussi utiliser ~ dans la fonction Route pour passer outre les règles de préfixe de l’Action.



Le préfixe défini par la fonctionnalité RoutePrefix peut également comporter des variables de paramètres :


Contraintes de routage

Vous pouvez contraindre les variables de paramètres dans une route par « {nom de la variable de paramètre : contrainte} ».


Ci-dessus, si l’id de la variable fragment est de type int, elle est dirigée vers la première action, et sinon, elle est dirigée vers la seconde action.

ASP.NET contraintes intégrées à l’API Web incluent :

{x :alpha} contraint les lettres majuscules et minuscules
{x :bool}
{x :datetime}
{x :décimal}
{x :double}
{x :float}
{x :guid}
{x :int}
{x :longueur(6)}
{x :length(1,20)} contraint la plage de longueur
{x :long}
{x :maxlength(10)}
{x :min(10)}
{x :range(10,50)}
{x :regex(regex)}


Vous pouvez définir plusieurs contraintes pour une variable de paramètre en même temps :

Implémentez l’interface IHttpRouteConstraint pour personnaliser les règles de contrainte. Implémenter une contrainte qui ne peut pas être 0.


Enregistrez une contrainte personnalisée dans WebApiConfig dans le dossier App_Start.


Utilisez des contraintes personnalisées.


Paramètres optionnels et leurs valeurs par défaut

Si une variable de paramètre de routage est optionnelle, le paramètre doit également recevoir une valeur par défaut.


Ajouter ? après la contrainte pour indiquer optionnel, et définir la valeur par défaut pour id dans les paramètres de la méthode.

Définir un nom pour l’itinéraire



Priorité de routage

La priorité de route définie par la propriété Route est déterminée en fonction des conventions et de la propriété Routeorder.

Les conventions sont :

1. Variables de fragments statiques
2. Fragmenter les variables avec contraintes
3. Variables fragmentées sans contraintes
4. Variable de fragment joker avec contraintes
5. Variables de fragments jokers non contraintes

La valeur par défaut de la propriété RouteOrder est 0, et plus la valeur de la propriété est basse, plus elle est élevée.


Ci-dessus, l’ordre de priorité pour le routage est :

variable-fragment statique orders/details, la valeur de la propriété RouteOrder est 0
ordres/{id} avec des variables de fragment contraintes de valeur 0 dans la propriété RouteOrder
orders/{customerName} est une variable fragment sans contraintes, et la valeur de la propriété RouteOrder est 0
orders/{*date} est une variable de fragment joker avec une valeur de 0 dans la propriété RouteOrder.
ordres/valeur de propriété RouteOrder en attente de 1






Précédent:Tenez un registre de ce qui peut être payé avec une carte de crédit
Prochain:Impossible de fournir un processus pour un ADO.NET au nom fixe « MySql.Data.MySqlClient »...
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com