Maison développement back-end Tutoriel C#.Net Comparaison détaillée de plusieurs versions de WebApi dans ASP.Net Core (photo)

Comparaison détaillée de plusieurs versions de WebApi dans ASP.Net Core (photo)

Sep 25, 2017 am 11:10 AM
asp.net core webapi

Cet article présente principalement la comparaison de plusieurs contrôles de version d'ASP.Net Core WebApi. L'éditeur pense que c'est plutôt bon. Maintenant, je vais le partager avec vous et vous donner une référence. Suivons l'éditeur pour y jeter un œil

1. Avantages du contrôle de version :

(1) Il permet de lancer des fonctions en temps opportun manière et ne perturbera pas les systèmes existants.

(2) Cela peut également aider à fournir des fonctionnalités supplémentaires à des clients sélectionnés.

Le contrôle de version de l'API peut être contrôlé de différentes manières, comme suit :

(1) Ajouter la version dans l'URL ou en tant que paramètre de chaîne de requête,

(2) Par en-têtes personnalisés et en acceptant les en-têtes

Dans cet article, voyons comment prendre en charge plusieurs versions de l'API Web ASP.NET Core.

1. Créez un projet webapi principal asp.net et référencez le package NuGet : Install-Package Microsoft.AspNetCore.Mvc.Versioning -Version 2.0.0

Le projet et le package d'installation sont prêts, nous devons alors ajouter le code suivant à la méthode ConfigureServices dans Startup.cs :

Comme vous pouvez le voir, 3 options différentes sont configurées.

  • ReportAPIVersions : ceci est facultatif. Cependant, lorsqu'elle est définie sur true, l'API renvoie les informations sur la version prise en charge dans l'en-tête de réponse.

  • AssumeDefaultVersionWhenUnspecified : Cette option sera utilisée pour les requêtes qui ne fournissent pas de version. Par défaut, la version supposée de l'API est 1.0.

  • DefaultApiVersion : Cette option permet de spécifier la version de l'API par défaut à utiliser lorsqu'aucune version n'est spécifiée dans la requête. Ce sera par défaut la version 1.0.

Voici toutes les configurations et réglages. Nous allons maintenant voir les différentes manières d’accéder aux versions API.

2. Implémentez le contrôle de version via QueryString

Ouvrez notre contrôleur et ajoutez-y la fonctionnalité ApiVersion, comme indiqué dans le code suivant :

Le code ci-dessus est celui de la version 1.0. Vous pouvez également créer une autre classe de contrôleur portant le même nom dans un espace de noms différent et définir la version de l'API sur la version 2.0. Comme le montre l'image ci-dessous :

C'est tout. Allez maintenant dans le navigateur et accédez au contrôleur. Vous devriez voir la sortie du contrôleur API version 1.0 car elle est définie par défaut. Ajoutez maintenant api-version=2 dans l'URL et vous devriez voir la sortie du contrôleur API version 2.0.

2 Implémenté via le segment de chemin d'URL :

  • api/v1/values

  • api/v2/values

Toujours projet ci-dessus, il vous suffit d'ajouter le code suivant aux contrôleurs v1 et v2. Comme indiqué ci-dessous :

De même, vous devez mettre à jour les paramètres de routage vers tous les emplacements applicables. Avec ce changement, un numéro de version est toujours requis lors de l'accès à l'interface API. Vous pouvez accéder à la version 1.0 via api/v1/values ​​​​et à la version 2.0 via api/v2/values ​​​​en modifiant le numéro de version dans l'URL. Simple et semble plus propre.

Les résultats des tests sont les suivants :

3. En-têtes

Dans les deux méthodes ci-dessus, l'URL doit être modifiée pour prendre en charge le contrôle de version. Toutefois, si vous souhaitez que l'URL de l'API reste propre, les informations sur la version de l'API peuvent également être transmises en ajoutant un en-tête HTTP. Pour que cela fonctionne, vous devez configurer les options d'ApiVersionReader. Le code est le suivant :

La ligne en surbrillance nous indique que l'en-tête "api-version" est désormais l'emplacement attendu pour le numéro de version de l'API. Assurez-vous que les propriétés de l'itinéraire ne contiennent pas de détails de version. Alors testez-le et voici le résultat :

Lorsque vous fournissez 2.0 comme valeur à "version api", il appellera le contrôleur de version 2.0 et renverra la sortie.

Simple et facile à mettre en place. Cependant, la méthode de paramètre de chaîne de requête pour la gestion des versions ne fonctionnera plus. Une fois l'en-tête défini, les paramètres de chaîne de requête ne peuvent pas être spécifiés. Si vous souhaitez prendre en charge les deux cas, utilisez QueryStringOrHeaderApiVersionReader au lieu de HeaderApiVersionReader. Le code est le suivant :

Par conséquent, les paramètres de chaîne de requête et les en-têtes sont désormais pris en charge. Le nom du paramètre de chaîne de requête par défaut est api-version, vous pouvez donc laisser le constructeur vide, mais si un nom différent est requis, vous devez le fournir. Vous pouvez également utiliser des noms différents pour les paramètres et les en-têtes de chaîne de requête. N'oubliez pas que nous définissons également ReportApiVersions sur true, ce qui renvoie les informations de version dans l'en-tête de réponse. Voir photo ci-dessous.

Maintenant, examinons quelques options supplémentaires.

Utilisation du paramètre MapToApiVersion :

L'attribut MapToApiVersion permet de mapper une seule opération d'API à n'importe quelle version. En d’autres termes, un seul contrôleur prenant en charge plusieurs versions. Les contrôleurs ne peuvent disposer que de méthodes d'action API prises en charge par la version 3. Dans ce cas, vous pouvez utiliser MapToApiVersion. Jetez un œil au code ci-dessous.

La signification du code ci-dessus est : chaîne publique Get() Cette méthode n'est prise en charge que dans la version 1.0, et la méthode chaîne publique Getv3() n'est prise en charge que dans la version 3.0.

Il y a des photos et des images réelles, c'est très flexible, j'aime beaucoup.

Utilisation du paramètre Obsolète :

Lors de la prise en charge de plusieurs versions d'API, certaines versions finiront par devenir obsolètes au fil du temps. Pour marquer une ou plusieurs versions d'API comme obsolètes, décorez simplement votre contrôleur avec Obsolète. Cela ne signifie pas que les versions API ne sont pas prises en charge. Vous pouvez toujours appeler cette version. Il s'agit simplement d'un moyen de faire savoir aux utilisateurs de l'API appelant que les versions suivantes seront obsolètes à l'avenir.

Le paramètre Obsolète sur TRUE ci-dessus signifie que la version 1.0 sera obsolète à l'avenir. Lorsque vous accédez à notre interface API, vous pouvez voir les informations suivantes dans l'en-tête de réponse, comme le montre la figure ci-dessous :

Utilisation de la fonctionnalité ApiVersionNeutral :

ApiVersionNeutral Définition de la fonctionnalité Cette API ne prend plus en charge le versionnage. Ceci est utile pour les API qui se comportent exactement de la même manière, qu'elles prennent en charge la gestion des versions d'API ou pour les API héritées qui ne prennent pas en charge la gestion des versions d'API. Par conséquent, vous pouvez ajouter la propriété ApiVersionNeutral pour quitter le contrôle de version.

Obtenir des informations sur la version (Version Information)

Si vous souhaitez savoir à quelle version du client vous accédez, vous pouvez implémenter cette fonction via ce qui suit code :

Pour résumer, disposer de plusieurs versions de l'API peut aider à déployer des fonctionnalités améliorées de manière efficace tout en facilitant le suivi des modifications. Dans cet article, nous avons vu comment ajouter la prise en charge de plusieurs versions dans l'API ASP.NET coreWEB. Le package nuget prend en charge la gestion des versions via les paramètres de chaîne de requête, l'ajout de segments de chemin dans les URL et via les en-têtes. Il propose également des opérations API de version unique et la possibilité de désactiver les versions.

Est-il possible de contrôler la version d'une API sans recourir à des packages tiers ? Il existe des méthodes que je n'entrerai pas dans les détails.

Quatre versions Ultimate (sans aucun package NuGet) Contrôle de version de l'API Web principale asp.net

Créez un nouveau projet d'API principale :

Sous le dossier VersionControl, créez une nouvelle classe NameSpaceVersionRoutingConvention qui implémente l'interface IApplicationModelConvention. Le code est le suivant :


public class NameSpaceVersionRoutingConvention:IApplicationModelConvention
  {
    private readonly string apiPrefix;
    private const string urlTemplate = "{0}/{1}/{2}";
    public NameSpaceVersionRoutingConvention(string apiPrefix = "api")
    {
      this.apiPrefix = apiPrefix;
    }

    public void Apply(ApplicationModel application)
    {
      foreach (var controller in application.Controllers)
      {
        
        var hasRouteAttribute = controller.Selectors
        .Any(x => x.AttributeRouteModel != null);
        if (!hasRouteAttribute)
        {
          continue;
        }
        var nameSpaces = controller.ControllerType.Namespace.Split('.');
        //获取namespace中版本号部分
        var version = nameSpaces.FirstOrDefault(x => Regex.IsMatch(x, @"^v(\d+)$"));
        if (string.IsNullOrEmpty(version))
        {
          continue;
        }
        string template = string.Format(urlTemplate, apiPrefix, version,
        controller.ControllerName);
        controller.Selectors[0].AttributeRouteModel = new AttributeRouteModel()
        {
          Template = template
        };
      }
    }
  }
Copier après la connexion
<.>Code de débogage On constate que cette méthode ne sera exécutée que lorsque le programme est exécuté pour la première fois, et ne sera pas exécutée plusieurs fois par la suite, elle est donc très efficace.

5.Résumé :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment activer la fonctionnalité d'intégrité de la mémoire de Core Isolation dans Windows 11 Comment activer la fonctionnalité d'intégrité de la mémoire de Core Isolation dans Windows 11 May 10, 2023 pm 11:49 PM

La mise à jour Windows 11 2022 (22H2) de Microsoft active par défaut la protection de l'intégrité de la mémoire de CoreIsolation. Cependant, si vous utilisez une ancienne version du système d'exploitation, telle que Windows 11 2022 Update (22H1), vous devrez activer cette fonctionnalité manuellement. Activez la fonctionnalité d'intégrité de la mémoire de CoreIsolation dans Windows 11. Pour les utilisateurs qui ne connaissent pas Core Isolation, il s'agit d'un processus de sécurité conçu pour protéger les activités principales de base de Windows contre les programmes malveillants en les isolant en mémoire. Ce processus, combiné à la fonction d'intégrité de la mémoire, garantit

Que signifie le cœur informatique ? Que signifie le cœur informatique ? Sep 05, 2022 am 11:24 AM

Le noyau a deux significations dans les ordinateurs : 1. Le noyau, également appelé noyau, est le composant le plus important du processeur. Tous les calculs, l'acceptation des commandes de stockage et le traitement des données du processeur sont effectués par le noyau. core est le nom du processeur d'Intel, Core est la marque de processeur lancée par Intel après le processeur Pentium. Elle a actuellement lancé des processeurs Core de douzième génération.

Comment réparer l'erreur de déclenchement thermique du processeur dans Windows 11/10 [Réparer] Comment réparer l'erreur de déclenchement thermique du processeur dans Windows 11/10 [Réparer] Apr 17, 2023 am 08:13 AM

La plupart des appareils tels que les ordinateurs portables et les ordinateurs de bureau sont depuis longtemps largement utilisés par les jeunes joueurs et codeurs. Le système se bloque parfois en raison d'une surcharge des applications. Cela oblige les utilisateurs à arrêter leurs systèmes. Cela arrive principalement aux joueurs qui installent et jouent à des jeux lourds. Lorsque le système tente de démarrer après un arrêt forcé, il génère une erreur sur un écran noir comme indiqué ci-dessous : Vous trouverez ci-dessous les avertissements détectés lors de ce démarrage. Ceux-ci peuvent être consultés dans les paramètres de la page du journal des événements. Avertissement : déclenchement thermique du processeur. Appuyez sur n'importe quelle touche pour continuer. ..Ces types de messages d'avertissement sont toujours émis lorsque la température du processeur d'un ordinateur de bureau ou d'un ordinateur portable dépasse son seuil de température. Vous trouverez ci-dessous les raisons pour lesquelles cela se produit sur les systèmes Windows. De nombreuses applications lourdes sont en cours

Pratique de développement d'applications multiplateformes .NET Core : un parcours fluide de Windows à Linux et macOS Pratique de développement d'applications multiplateformes .NET Core : un parcours fluide de Windows à Linux et macOS Feb 26, 2024 pm 12:55 PM

Avec le lancement de .NETCore, les développeurs .NET disposent d'une nouvelle opportunité pour écrire et exécuter facilement des applications .NET sur plusieurs systèmes d'exploitation. Cet article expliquera comment utiliser .NETCore pour réaliser le développement d'applications multiplateformes et partagera les meilleures pratiques sur les systèmes d'exploitation tels que Windows, Linux et macOS. 1. Préparez l'environnement de développement. Pour démarrer le développement d'applications multiplateformes, vous devez d'abord préparer l'environnement de développement pour chaque plateforme cible. Windows Sous Windows, vous pouvez installer .NETCoreSDK via Visual Studio. Une fois l'installation terminée, vous pouvez créer et exécuter des projets .NETCore via Visual Studio. Li

La pièce CORE vaut-elle la peine d'être conservée à long terme ? La pièce CORE vaut-elle la peine d'investir ? La pièce CORE vaut-elle la peine d'être conservée à long terme ? La pièce CORE vaut-elle la peine d'investir ? Feb 29, 2024 pm 05:34 PM

Pièce CORE : vaut-il la peine de la conserver à long terme ? CORE coin est une crypto-monnaie basée sur le mécanisme de consensus Proof of Work (PoW) et a été fondée par l'équipe Core en 2018. Son objectif est d’établir un système de monnaie numérique sécurisé, efficace et évolutif, largement utilisé pour le paiement et le stockage de valeurs. CORE coin est conçu pour fournir une solution de paiement décentralisée qui offre aux utilisateurs plus de protection de la vie privée et de commodité de transaction. Avantages et sécurité de la devise CORE : la devise CORE est basée sur le mécanisme de consensus à l'épreuve de la charge de travail et dispose d'une sécurité renforcée. Efficace : la vitesse de transaction de CORE coin est rapide et peut gérer des milliers de transactions par seconde. Évolutif : la pièce CORE a une grande capacité de bloc et peut prendre en charge un grand nombre de transactions. Décentralisation : la pièce CORE est une crypto-monnaie décentralisée

Qu'est-ce que le noyau sous Linux Qu'est-ce que le noyau sous Linux Mar 23, 2023 am 10:00 AM

Sous Linux, le noyau est une image mémoire avec des informations de débogage ajoutées Lorsqu'un programme se termine ou se termine anormalement sous Linux, nous utiliserons le fichier core pour l'analyse, qui contient la mémoire, les registres, le pointeur de pile et d'autres informations lorsque le programme est en cours d'exécution. Le format est ELF, ce qui peut être compris comme le transfert de l'état actuel du programme dans un fichier.

Comment Nginx résout le problème des requêtes secondaires inter-domaines WebApi et de la page unique Vue Comment Nginx résout le problème des requêtes secondaires inter-domaines WebApi et de la page unique Vue May 15, 2023 am 09:28 AM

1. Introduction Étant donné que le projet est séparé du front-end et du back-end, l'interface API et le front-end Web sont déployés sur des sites différents, donc dans l'article précédent, la solution de requête inter-domaines webapiajax (implémentation cors) utilise le cross-domain traitement au lieu de jsonp. Mais après un certain temps, j'ai découvert un problème très étrange. Chaque fois que le front-end lance une requête, via les outils de développement du navigateur, je peux voir qu'il y a deux requêtes pour la même URL sous la méthode de la première. La requête est constituée d'options, la méthode de la deuxième requête est le vrai get ou post, et la première requête ne renvoie aucune donnée et la deuxième requête renvoie des données normales. 2. Raison des premières options

IFA2024 | Core Ultra Series 2 : à Lunar Lake, Intel présente son processeur x86 le plus efficace à ce jour IFA2024 | Core Ultra Series 2 : à Lunar Lake, Intel présente son processeur x86 le plus efficace à ce jour Sep 04, 2024 am 06:38 AM

Environ un an après avoir annoncé le Core Ultra Series 1, également connu sous le nom de Meteor Lake, Intel enchaîne avec la deuxième génération. Core Ultra Series 2, alias Lunar Lake, a déjà été présenté au Computex de juin. A l'IFA, le lancement final du Core Ultr

See all articles