ASP. NET Core 6 - Développement d'API minimale | Trevoir Williams | Skillshare
Recherche

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

ASP. NET Core 6 - Développement d'API minimale

teacher avatar Trevoir Williams, Jamaican Software Engineer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      0:57

    • 2.

      Aperçu de l'API

      6:40

    • 3.

      Projet d'installation

      4:18

    • 4.

      Politique de configuration de CORS

      4:53

    • 5.

      Configuration de la base de données SQLite

      11:37

    • 6.

      Explorer les méthodes GET

      9:39

    • 7.

      Explorer la méthode PUT

      9:44

    • 8.

      Explorer la méthode POST

      4:00

    • 9.

      Explorer la méthode DELETE

      4:03

    • 10.

      API de test avec Swagger Doc

      4:14

    • 11.

      Examen de l'API

      0:55

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

140

apprenants

--

projets

À propos de ce cours

Apprenez à créer une API à l'aide d'ASP.NET Core et . NET 6.

Dans ce cours, vous allez :

Construire un . API minimale de noyau NET

  • Comprenez . NET 6
  • Comprendre les verbes d'API
  • Comprendre le noyau SQLite et Ef
  • Utiliser l'injection de dépendance
  • Comprendre le swagger

Rencontrez votre enseignant·e

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Enseignant·e
Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour et bienvenue dans mon cours, développement d' API minimale ASP.Net Core. Je suis votre instructeur pour War Williams et je suis ingénieur logiciel et conférencier, ce que je fais depuis 12 ans. Dans ce cours, nous allons comprendre comment nous développons des API minimales à comprendre comment nous développons des l'aide de dotnet six, nous allons comprendre verbes d'API entiers fonctionnent ensemble, light et Entity Framework Le cœur s'est combiné pour nous donner un endroit où stocker et récupérer des données. Nous examinerons également l' injection de dépendances et des documents Swagger entiers nous aident à interagir avec notre API. Lancer ce cours va utiliser Visual Studio 2022 et séquelles For dotnet. Visual Studio 2022 est nécessaire pour utiliser dotnet six. Il s'agit d'un IDE entièrement équipé et extensible, et il est très puissant et nous permet d'en faire beaucoup plus pour le développement. Donc, sans plus tarder, commençons. 2. Aperçu de l'API: Bonjour les gars, bienvenue au début de cette nouvelle section où nous travaillerons sur une API RESTful pour compléter notre application mobile. Nous avons donc déjà examiné toutes les bases de Maui. Mais maintenant, nous voulons créer une vraie application. De manière générale, les applications mobiles communiquent avec APA, c'est pourquoi beaucoup d'entre elles ont besoin d'un accès à Internet. Maintenant, si vous n'êtes pas si familier avec ce qu'est une API, je vais vous expliquer quelques-uns des principes de base dès maintenant. Et si vous voulez vraiment approfondir plus de détails vous pouvez consulter mes autres cours où je vous amène travers la sonnerie avec la conception de l'API. Mais pour ce cours, nous allons rester assez simple pour que nous puissions mettre en place une API et voir comment nous pouvons consommer et interagir avec cette API via notre application mobile. Nous sommes maintenant en train de créer une API RESTful. Et poignet est l'acronyme de Representational State Transfer. Il s'agit essentiellement d'une norme ouverte qui permet à tout type de client d' interagir avec point de terminaison et d'accéder à certains, ce que nous appellerons des ressources informatiques. Par exemple, prenons une application comme Facebook. Nous sommes Facebook sur notre téléphone mobile, ou si c'est sur notre Internet, nos navigateurs Internet, nous l'avons sur divers appareils et nous avons des applications pour Android, iOS, etc. Le fait est que chacune de ces applications n'est pas réalisable, construite à partir de zéro. Il s'agit en fait d' interagir avec une API développée par Facebook et continue de développer. Et c'est pourquoi lorsque vous recevez des mises à jour, ce qu'ils font peut être rester dans quelque chose, l'API et ils doivent mettre à jour la façon dont elle interagit avec cette API. Mais essentiellement, l' intelligence repose sur l'APA. Et puis, comme il s'agit d'une norme ouverte, peu importe qu'il s'agisse d'un appareil Android ou d'un appareil Windows, votre téléphone portable, votre montre mobile ou de votre montre connectée. Tous peuvent interagir avec ces API standard ouvertes ou ce service Web qui est généralement conforme au style architectural du reste. Lorsque nous parlons d' API et d'API reposantes, nous voulons nous assurer que nous sommes à l' aise avec certains concepts . L'une est uniforme, ce qui signifie qu'il existe un moyen standard de formuler vos URL et de répondre à ces appels. C'est encore moins. Vous ne trouvez donc généralement pas que les cookies et autres fichiers sont générés sur l'appareil pour prendre en charge l'API. L'appel est fait une fois que j' appelle ça fini, ça l'oublie. n'y a rien de vraiment retenu, n'est-ce pas ? Il peut être mis en cache, ce qui signifie que parfois vous souffrez d'une inflammation qui est toujours demandée. Donc, au lieu d'aller à la base de données ou au magasin de données, nous y mettons chaque fois un argent pour que l'API puisse réagir plus rapidement en cas d' inflammation plus fréquemment consultée et ne change généralement pas tant que ça. Il est superposé. Vous disposez donc de différentes parties et couches de l'API pour limiter ce qui peut être fait à différents niveaux. ressource représente généralement des bits de données ou un objet entre la base de données et l'application cliente. De manière générale, lorsque vous nommez vos points de terminaison d' API RESTful, vous voulez être autodescriptif. Donc, si c'est un point final pour faire face à l'inflammation personnelle, alors vous voulez vous assurer de dire inflammation de la personne. Ce ne sont donc que des principes. Ensuite, nous avons les méthodes HTTP. Maintenant, nous avons différentes méthodes sous la forme de get, put, post, delete. Ce sont les plus populaires que vous verrez être utilisés. Il y en a d'autres. Mais de manière générale, lorsque nous avons affaire à une banque de données, nous voulons effectuer des opérations. Nous appelons généralement cela des opérations de foule. Nous voulons créer des données dans la base de données, voulions récupérer les données de la base de données. Nous voulons y apporter des modifications ou le mettre à jour, et nous voulons le supprimer ou le supprimer. Voyez donc le stérilet. Par conséquent, obtenez gère la récupération lorsque vous souhaitez afficher l'enregistrement ou un tas d'enregistrements. Mettre la demande I GET, put est le u, qui est mise à jour. Vous avez également un correctif, mais c'est un sujet pour une autre fois. Pour mettre en œuvre le plus facile, nous allons travailler avec cela à nos fins ici. Mais nous envoyons des demandes PUT chaque fois que nous voulons mettre à jour les données. Nous avons la demande de publication chaque fois que nous voulons créer des données. Et puis nous avons les demandes de suppression, qui, à mon avis, sont explicites, sinon les plus explicatives, l' une d'entre elles, puis nous avons la réponse HTTP. Voilà donc les demandes que nous venons d'examiner. La réponse est celle que le serveur renvoie. Nous avons donc généralement un XX et XX signifie simplement un nombre, nombres comme 100, entre cent, cent et quatre-vingt-dix-neuf. L'axe des X représente tout ce qui se situe entre 00 et 99100. Les codes d'état parlent généralement de la communication sur les protocoles de transfert à 100. En général, le succès de l'opération est le plus élevé. années 300, c'est qu'il y a eu une redirection. 400 montre qu'il y avait peut-être un mauvais centre de données ou du client. Ainsi, le milieu utilisateur reçoit des données que le serveur n'a pas pu traiter. Nous dirions donc que c'était mauvais, une mauvaise demande ou que vous avez demandé quelque chose qui n'a pas pu être trouvé comme une erreur 404. Je suis sûr que tout le monde peut s'identifier à une erreur de fluorophore. Ensuite, nous avons l'erreur 500, ce qui signifie que le serveur est là où se trouvait le problème. Les données sont arrivées, mais peut-être que vous n'avez pas appelé ce problème de connectivité de la base de données ou que le serveur était terminé , l'API répondrait avec une réponse 500. s'agit donc de citations de réponses générales et il est très important d'obtenir ces droits dans une bonne conception d'API. Tout cela pour voir que notre API servira de point d'interaction entre notre application mobile et une base de données centrale. Tout ce que nous faisons sur l'application mobile, nous voulons qu'elle circule à travers l'API car c'est là que sera la vraie intelligence et c'est sur cela que nous allons commencer ce voyage. Dans cette section, nous commençons la conception de l'API et nous examinerons les bases, faisant suffisamment pour la mettre en œuvre et comprendre une fois de plus, si vous voulez plus de détails, vous peut consulter ce guide ultime de développement de l'API ASP.Net Core. Vous pouvez vérifier tout ce que vous devez savoir sur la conception correcte de l'API à partir de zéro. Dans ce cours, nous gardons les choses simples. Dans la prochaine leçon, nous allons mettre en place notre projet d'API et faire tourner la balle. 3. Projet de configuration: Très bien, les gars, bienvenue. Nous allons donc y sauter directement. Nous allons ouvrir notre Visual Studio 2022 et nous allons créer un nouveau projet, mais je veux une solution vide. Je préfère donc commencer par une solution vide. C'est donc plutôt une solution vide, sorte que je puisse donner un nom à la solution , puis ajouter les projets par la suite. Nous allons donc travailler sur une application mobile pour panier d'achat, n'est-ce pas ? Donc, liste de panier, donc je vais juste dire liste de panier d'achat. C'est le nom de la solution. Nous pouvons donc y aller de l'avant et créer cela. Maintenant que nous aurons la solution, je vais créer un nouveau projet. Je vais donc directement la solution, Add New Project. Ensuite, nous pouvons ajouter un projet API. Je vais juste chercher une nouvelle fois l'API. Et puis je vais utiliser une API Web ASP.Net Core C-sharp . Et puis je vais appeler l'API point de liste de panier . Ensuite, nous avons frappé Next. Et voici maintenant quelques options intéressantes pour nous. Et comme je l'ai dit, je veux que cela reste relativement simple, simple pour nous. Premièrement, nous allons maintenant utiliser dotnet Core six avec l'aperçu de Visual Studio 2022, vous pouvez revenir à cinq, ce qui, au moment de cet enregistrement, a presque atteint la fin de vie donc vous Je ne veux probablement pas y aller. Dotnet Core à trois points a toujours un support à long terme, que dotnet six et dotnet sept sont en préversion. Pour des raisons de stabilité, je vais aller de l'avant avec dotnet six. Et nous pouvons mettre en place un type d'authentification. Mais pour l'instant, n'en choisissons rien, car nous le ferons manuellement plus tard. Nous pouvons configurer pour HTTPS, nous n'avons pas besoin de plus sombre. Maintenant, c'est là que ça devient intéressant. Nous pouvons choisir d'utiliser des contrôleurs ou de les décocher, sorte que nous puissions utiliser des API minimales. Traditionnellement, nous utilisions toujours des contrôleurs, mais je pense que ce serait le moment idéal pour essayer de voir à quoi ressemble l'API minimale. autant plus qu'il s'agit vraiment d'une application légère, mais elle pourrait grandir sur nous de toute façon. Je vais donc décocher cette case utiliser le contrôleur afin que nous puissions utiliser des API minimales, laisser le support des API ouvertes. Et ensuite, la prochaine option qui est plutôt intéressante est de savoir si nous voulons ou non utiliser des instructions de niveau supérieur. Ainsi, avec dotnet six, les instructions de niveau supérieur auraient été comme la fonction principale et l'espace de noms principal, etc. Certaines personnes auraient donc dit qu'elles préféraient le voir fait en six, introduisant des classes de style minimales où vous n'avez pas nécessairement besoin d'être aussi explicite au sommet. Vous pouvez donc choisir celui que vous voulez. Je ne vais pas utiliser les instructions de premier niveau parce que je les aime comme ça. Et je vais juste cliquer sur Créer. Très bien, nous avons maintenant créé notre projet API. Donc, si je vais dans program.cs, remarquez que si vous avez l'habitude de voir le dossier Controllers dans votre développement d'API, vous ne le verrez pas ici car nous décochons les contrôleurs américains. Si vous choisissez d'utiliser des contrôles, pas de problème, vous devriez être en mesure de suivre correctement. Mais parce que nous faisons des API minimales, ou j'ai choisi les modèles d' API minimaux. Ce qui se passe, c'est que nous allons voir tout ce qui se passe ici même dans ce program.cs. Ainsi, une fois qu'un programme est exécuté, il crée toutes les dépendances dont il a besoin. Ensuite, il passe directement à l'exécution du code ou à savoir quel codage est exécuté, puis il s'exécute. Donc, l'API va rester là et attendre les demandes et tout fonctionne à peu près à partir de notre program.cs. Je vais juste faire ça pour m'assurer que ça fonctionne et que ça marche. Et il lancera ce navigateur qui nous montre notre document Swagger. Par conséquent, parce que nous avons choisi la prise en charge des API ouvertes, nous avons automatiquement intégré Swagger à notre API. Une fois que nous aurons exécuté cette opération, nous verrons la documentation. Ainsi, plus il y a de capacités de points de terminaison ce document se développe automatiquement. C'est donc tout pour nous de créer. Lorsque nous reviendrons, nous mettrons en place la politique du cours. 4. Configuration de la politique CORS: Très bien les gars, donc dans cette leçon, nous mettons place notre politique de cours. Et j'ai tendance à faire cela comme une des premières choses. Chaque fois que je crée une API, pourquoi ? Eh bien, l'API par conception est censée être consommée par d'autres clients. autres sont des clients qui ne se trouvent pas nécessairement sur le même serveur que l'APA. Aucune voiture n'est un terme général de sécurité pour n'importe quelle application hébergée sur Internet. Et d'une manière générale, cette politique dicterait que les ressources différentes sont des demandes différentes plutôt, peuvent être facilitées par l'application demandée. Tout ça à voir. La politique de cours nous permet de rejeter les demandes provenant de certaines sources si toutes les sources sont faibles. Ainsi, lorsque nous avons le mobile ailleurs, ou 60 millions d' applications mobiles dans le monde entier et nos API sur un serveur quelque part. Nous aurions besoin d'une politique de cours pour dire, je ne sais pas, je ne peux pas suivre 60 millions de demandes et 60 millions de téléphones portables. Je vais juste permettre à n'importe qui de me parler. Bien sûr, nous pouvons ajouter d'autres mesures de sécurité à un autre niveau. Mais pour l'instant, nous utiliserons simplement la politique de cours pour nous assurer que nous puissions faciliter demandes provenant d' applications mobiles après coup, n'est-ce pas ? Nous allons y aller jusqu'à ce que les lignes sept dans le program.cs. Et comme je l'ai dit lors de la dernière leçon, je n'ai pas choisi d'utiliser les instructions de premier niveau. Donc, c'est tout droit au but, non ? Il démarre simplement le code parce qu'il sait déjà que c'est le program.cs, donc il n'a pas besoin de déclarer int, void, classe de programme, etc. Donc pas de classe void, vous savez ce que j'ai vu ? Allons-y. Nous disons donc les services de constructeur, points, ajoutent des voitures. C'est juste là. Et ce que nous allons faire ici, c'est de mettre en place des options qui guideront la configuration. Très bien, nous avons dit Options, puis utilisez des accolades bouclées. Et laissez-moi agrandir ça. Assurez-vous que nous puissions voir me donner un peu plus de réalisme. Cela permet de s'assurer que nous pouvons tous voir clairement ce qui se passe. Très bien, créez donc les services de points qui ajoutent CORS sur le Web ou des options. Et puis à l'intérieur de nos options vont avoir des options, point, ajouter, politique. C'est donc notre politique de cours. Nous devons lui donner un nom. Donc je vais juste dire un peu parce que je ne suis pas prêt à imposer des restrictions. Donc oui, ça va littéralement être Bonjour à tous. Et puis je vais lancer une autre expression lambda. Il suffit de voir une Lambda. Et puis c'est comme une fonction de constructeur, donc je vais juste dire un point et ensuite je peux dire autoriser n'importe quel en-tête. Cela signifie donc tout type de demande qui arrive , est tirée, etc. Bien que cela ait commencé, voyez n'importe quelle origine. Où qu'il soit, d' origine, c'est que les demandes sont faibles, et puis je peux voir un faible, n'importe quelle méthode autorise réellement n'importe quelle méthode est la méthode HTTP qui entre dans l' en-tête est différent. Je m'excuse, l'en-tête fait partie du corps de la demande. Et parfois, certains frappeurs peuvent être des milices. Nous allons donc suivre n'importe quel en-tête, autoriser, n'importe quelle méthode, etc. Et voilà. C'est donc la politique que nous avons mise en place. Non, nous devons laisser le middleware, c'est donc ici que nous développons nos services. Mais le middleware commence à la déclaration « up » ici. Et il a remarqué que la variable ici change, non ? C'est, ou le nom de l'objet change, il est en place des points Builder, des services ou autre. Et donc, ce que nous devons faire est de faire savoir à l'AppBuilder qu'il doit utiliser des cœurs. J'ai donc tendance à mettre ça en dessous. Donc je vais juste dire utiliser les noyaux. Utilisez donc le middleware cors et appliquez la stratégie créée appelée faible. Très bien, alors surveillez les frappe à ce moment-là, car c'est une corde magique. Vous risquez donc de ne rien déboguer si vous avez l'impression de renverser ces deux chariots à droite. C'est donc vraiment cela pour mettre en place notre politique de cours. Je peux m'arrêter ici parce qu' il n'y a pas vraiment de moyen tangible de valider cela à ce stade. En dehors de l' exécution de l'API, essayez de l'héberger quelque part, puis d' y accéder à partir d' une autre machine. C'est donc vraiment notre politique de cours. J'ai déjà expliqué pourquoi nous en avons besoin pour cela. Ainsi, lorsque nous reviendrons, nous continuerons à construire notre API. 5. Configurer la base de données SQLite: Bonjour les gars, bienvenue. Dans cet épisode, nous allons construire notre base de données. En général, bien sûr, pour une application qui va être mise à l'échelle pour une utilisation importante, vous souhaitez utiliser une base de données de niveau entreprise telle qu'Oracle ou Microsoft SQL Server. Ensuite, l'outil phare de mappage relationnel d'objet, ou la bibliothèque que dotnet Core nous donne l' interaction avec la base de données. Le phare est Entity Framework Core. Sachez qu'il a des connecteurs pour de nombreuses autres bases de données, donc je ne vous dis pas que vous devez utiliser la base de données que je suis sur le point d'utiliser, mais je reste assez simple, mais je vais expliquer le concept général pour vous afin que vous puissiez comprendre pourquoi je prends ces décisions. Donc, pour ce cours, je vais simplement utiliser une base de données de suite qui restera à l'intérieur du dossier avec l'APA. Mais encore une fois, dans une application de niveau entreprise, vous souhaitez vous connecter à un serveur distant pour une base de données de niveau entreprise telle que Microsoft SQL Server. Donc, pour intégrer Entity Framework dans notre projet, je vais cliquer avec le bouton droit sur le projet, puis accéder aux packages NuGet. Et ensuite, nous allons simplement aller dans Browse et je vais chercher Microsoft dot Entity Framework Core, suite légère. Encore une fois, si vous souhaitez utiliser une autre base de données, vous savez peut-être déjà comment la connecter à SQL Server. Ensuite, vous cherchez simplement Microsoft mais Entity Framework Core, et vous verriez les différents mourir pour SQL Server , pour mon SQL , etc. , pour mon SQL , etc. vous dites simplement Entity Framework, Core, duct et l' ingénieur de base de données, que vous préférez. Ensuite, vous trouverez les bibliothèques. Quelqu'un à télécharger. Entity Framework Core fait suite à la lumière, et cela viendra avec quelques bibliothèques supplémentaires. Laissez-moi donc télécharger et installer cela et accepter tout ce qui se présente. Pour cela, j'aurai également besoin d'une autre bibliothèque, qui est la suite de points de données Microsoft dot light dot core. Je peux donc aller de l'avant et attraper celui-là. Cela me permet d'effectuer d'autres opérations importantes. Je vais aller de l'avant et installer ça. Revenons maintenant à notre program.cs et commençons à le câbler. Je vais donc juste mettre quelques configurations et ensuite vous guider à travers elles. Ce que nous faisons ici, c'est que nous configurons un dossier. Très bien les gars, alors revenons à notre program.cs. Et je vais juste mettre quelques lignes de configuration et ensuite vous expliquer ce qui se passe lorsque je configure le chemin de la base de données. Ainsi, le chemin de la base de données va simplement aller dans le dossier racine et créer un fichier appelé panier dot db. Ensuite, la chaîne de connexion que je viens d'appeler une escroquerie est égale à une nouvelle connexion SQL Lite. Bien sûr, au fur et à mesure, vous devrez inclure certaines références manquantes. Il suffit donc de les inclure comme vous les voyez. Et la source de données sera égale au chemin de la base de données. Ensuite, nous disons construire des services dans le contexte de la base de données. Et nous avons le contexte DB du panier d'achat, qui a une ligne rouge parce qu' il n'existe pas encore, mais allez-y et mettez-le indépendamment. Ensuite, nous avons mis en place l'option que nous utilisons la suite ITE, et c'est notre connexion. Très bien, nous pouvons donc créer ce fichier. Je vais juste contrôler les points et je le générerai dans un nouveau fichier. Nous avons donc le contexte DB du panier d'achat. Maintenant, je vais d'abord rencontrer ce public , puis je vais le rendre hérité du contexte DB. Donc, une fois que vous faites cela, bien sûr en mettant tout manquant, manquant en utilisant la référence en conséquence. Maintenant que j'ai ces contextes DVI, je veux notre constructeur. Ensuite, ce constructeur va initialiser notre coche dans le contexte DB, les options de contexte DB. Et ces options se prendraient comme son type. Nous allons juste appeler cela Options et ensuite nous le transmettrons à la base, non ? Donc, essentiellement, ce que nous faisons, c'est d'injecter les options provenant de notre program.cs. Et ce seraient les options ici, vous voyez la lumière. Et ils ne faisaient que le transmettre à la base, qui est le contexte DB que nous utilisons. Appelez ITE. Très bien ? Non, nous avons vraiment besoin d'une table. Je vais juste dire « accessoire ». Ensuite, je vais créer un nouveau type de données. Je vais juste appeler ça un panier d'achat. Et appelons ça des paniers. Très bien, donc si nous construisons une application mobile, réfléchissez-y. Vous créez une application mobile pour aider les utilisateurs à compiler ce qu'ils veulent lorsqu'ils font leurs achats. C'est essentiellement ce que nous faisons ici, non ? Plus tard, au fur et à mesure que l'application évolue, nous voudrions peut-être mettre en place un moyen identifier à quel enregistrement de panier appartient, à quel utilisateur ou quel utilisateur a ces intérêts en deux. Mais comme je l'ai dit, je reste très simple. À ce stade, au fur et à mesure que nous évoluons, nous pouvons mettre des choses plus sophistiquées. Et je l'ai mis au mauvais endroit, cela ne devrait pas être dans le constructeur. Je m'excuse, ça devrait être après le constructeur. On y va. Il s'agit donc de la propriété dans le contexte EB. Dans le Framework Core, je devrai le faire dans les propriétés. Et en fait, il devrait s'agir d'un ensemble de base de données de type panier d'achat. Je me demandais pourquoi ça a l'air si bizarre. Donc, l'ensemble DB de type panier obtient que ce n'est pas le panier d'achat est un type de données dont nous avons besoin. Je vais donc simplement créer ça. Et je vais simplement générer cette classe dans un nouveau fichier. Maintenant, nous avons ce fichier de panier d'achat. Je peux simplement appuyer sur F 12 avec son choix et il sautera jusqu'à sa définition. Non, que possède un panier d'achat ? Non, la plupart des entités, et je dirais que chaque entité de votre base de données devrait toujours commencer par NAD. Très bien ? Nous pourrions avoir le nom de l'article, le nom de l'article. Très bien, comme je suis bien là-dessus, je suis ici en train d'essayer de prendre des raccourcis, mais c'est comme mon, mes sens de la programmation picotent. Premièrement, lorsque vous ajoutez quelque chose à un panier d'achat, vous devez probablement saisir le nom de l'article. Vous saisirez probablement la quantité que vous comptez récupérer. Et peut-être voudriez-vous définir un indicateur pour voir s'il est sélectionné ou non. Vous l'avez ramassé ou non ? Voici donc une chaîne pour le nom de l'élément. Et ensuite, nous avons int pour la quantité. Ou cela peut être le double pour la quantité, car on peut dire 1,5 ou quelque chose comme ça. Oh non, vous pouvez choisir le type de données approprié, donc la quantité et un booléen qui dit l'est. Ce sont donc nos types de données, n'est-ce pas ? Sachez que nous avons ce bol que je courais. Maintenant que j'ai le modèle de base pour ce à quoi ressemblera l'entrée de mon panier d'achat. Il est dit, revenez au contexte DB du panier d'achat. Et ce que je vais faire, c'est remplacer la méthode de création de modèle. Donc, lorsque vous écrivez le mot override, il vous demandera ce que vous aimeriez remplacer ? Et nous remplacons une création non modèle, et ensuite cela générera tout cela pour nous, donc nous avons besoin de cette première ligne. Ensuite, je suis allé voir une entité de points ModelBuilder, ce panier d'achat. Ensuite, je veux dire qu'il y a des données. Donc, dans ce cas, ce que je fais, c'est que je vais semencer la base avec des données afin que lorsque nous lançons notre API pour vérifier, nous verrons des données là-dedans, n'est-ce pas ? Les données prennent donc une collection d'objets de n'importe quel type que vous spécifiez ici. Donc je dirais simplement un nouveau panier d'achat et ensuite lui donner une pièce d'identité d'un qui est récupéré serait égal à des chutes. Et le nom de l'article serait, voyons voir, savon et c'est une chaîne. Et puis le dernier serait la quantité. Et nous avons besoin de trois barres de savon, par exemple, non ? Ensuite, il va juste prendre une collection à peu près. Nous pouvons donc simplement une virgule, séparer ces objets autant d' objets que vous le souhaitez. Bien sûr, chacun doit avoir un ID différent, car id sera automatiquement considéré comme une clé primaire dans la base de données. Alors, mélangeons un peu ça. Retrouvons ça vrai. Et cela serait élevé et nous devrions ramasser deux miches de pain. Et celui-ci peut rester tombé, et celui-ci devrait être un shampooing. J'ai juste inventé ça au fur et à mesure que n' est pas la liste de courses de Mariel. On y va. Nous avons donc trois éléments que nous voulons insérer dans notre table de base de données lorsque notre application est exécutée. Et nous avons presque tout branché pour avoir une base de données à , au moment de l'exécution, n'est-ce pas ? Donc ce que je vais faire, c'est aller dans les paquets NuGet et installer un paquet de plus, au moins pour null. Et celui-ci serait outils de dock Entity Framework Core qui nous donneront accès à certaines commandes que nous pouvons exécuter car nous devons créer la table dans la base de données. Nous allons aller de l'avant et obtenir les outils, installer cela. Et si vous regardez simplement, vous pouvez consulter mon cours Entity Framework Core si familier ou si vous n'êtes pas si à l'aise avec Entity Framework Core. Mais en un mot, cela nous permet d'exécuter ces commandes où nous pouvons ajouter une migration et la mettre à jour pour qu'elle soit des commutateurs, ce sur quoi nous allons nous concentrer en ce moment. Allons donc dans Outils et optons pour le gestionnaire de paquets NuGet et lançons cette console. Et puis je vais dire ajouter la migration des traits d'union. Et puis je vais juste dire créer une base de données. Ensuite, nous appuyons sur Entrée, laissez-le y réfléchir un peu. Ensuite, une fois cela fait, nous obtenons notre fichier de migration, que je ne vais pas entrer dans les détails, mais en un mot, on voit créer une table et insérer les données. Et nous avions mis trois disques en tête de série, non ? Par conséquent, la commande suivante serait mettre à jour la base de données de tirets. Si la base de données n'existe pas, elle va la créer, puis elle va ensuite insérer tous les enregistrements. À ce stade, notre base de données devrait donc exister. Vous pouvez aller de l'avant, construire et exécuter et simplement le tester. Mais bien sûr, nous n'avons pas encore construit le point final. Ainsi, lorsque nous reviendrons, nous construirons le point de terminaison de l'API qui nous permettra d' interroger ou de récupérer ces enregistrements que nous savons qu'ils sont dans la base de données. 6. Explorer les méthodes GET: Bonjour les gars, bienvenue. Nous venons donc de configurer notre base de données maintenant, nous voulons configurer nos premiers points de terminaison afin de voir ce qu'il y a dans la base de données. Parce que lorsque la base de données a été créée lors de l'exécution lors de la création modale, nous voulions voir ces enregistrements dans, donc au moins ces enregistrements devraient se trouver dans la base de données et tout ce que nous voulons au moins récupérer. et voyez comment fonctionne l'API. Ce que nous allons donc faire, c'est suivre le modèle qui nous a été donné. Oui, ce sont des prévisions météorologiques et oui, les données sont statiques pour ce qui est de ce tableau. Mais le principe qui sous-tend façon dont nous allons lire notre code est le même. En dessous ou les prévisions météorologiques juste au-dessus de la course de points de l'application. Ce que je vais faire, c'est écrire des points, serpiller, récupérer. Très bien, ce qui se passe, c'est que pour toutes les méthodes que vous souhaitez utiliser, vous pouvez voir une carte puis le type de méthode. Donc, nous voulons obtenir, obtenir plus de mon PUT, poster ou supprimer, etc., n'est-ce pas ? Alors, au fur et à mesure que nous les traversons, vous verrez ce genre de modèles. Nous verrons donc la vadrouille prendre, puis nous devons lui donner l'adresse. Ainsi, pour obtenir les prévisions météorologiques, vous devez voir l'URL ou les prévisions du logo oblique d'URL du serveur. Nous voulons obtenir les articles du panier d'achat. On dirait une barre oblique dans notre chaîne, des cartes de courses obliques. Très bien ? Et puis, ce que nous voulons faire, c'est faire une opération asynchrone. Ensuite, nous sommes à peu près asynchrones et nous avons besoin de notre représentation de notre base de données. Je vais donc effondrer tout ce qui n' est pas absolument nécessaire. Nous pouvons donc voir la plupart de ce que nous devons voir d' un seul coup, n'est-ce pas ? Nous avons besoin d'une représentation de notre base de données. Je vais donc devoir voir une base de données asynchrone créer un objet. Je vais juste appeler ça dB. Ensuite, nous créons une flèche Lambda. Ensuite, nous pouvons écrire à peu près notre code. Très bien. Je vais juste baisser ça et finir par un point-virgule. Et alors notre code de fonction sera dans cette section de la méthode, n'est-ce pas ? Je vais donc dire une base de données bizarre. Chariot à pois, paniers d'achat d' université. C'est très bien. Liste. Donc, je dis à peu près une étoile de cette table. Très bien ? Et c'est à peu près ce qu'il va faire. Alors passons en revue ça, regardons ça beau et propre. Donc, si vous n'étiez pas habitué aux API minimales et que vous êtes habitué aux contrôleurs, vous savez quoi, car vous auriez un gros fichier pour vraiment cette ligne de code avec une ancienne méthode et tout. C'est donc une belle façon succincte de voir. Lorsque vous atteignez ce point de terminaison, obtenez une copie de la base de données à partir de notre générateur de services, interrogez et retournez, peu importe. C'est vraiment tout ce que nous devons faire. Très bien, alors essayons les orteils. Je vais juste aller de l'avant et courir. Très bien, maintenant, essayons ça. Je vais juste aller de l'avant et exécuter le projet API. Et immédiatement, vous remarquerez que nous avons nos nouveaux points de terminaison, n'est-ce pas ? Nous avons donc notre point de terminaison GET. Nous pouvons étendre cela , nous pouvons le voir, l' essayer, puis nous pourrons l'exécuter. Donc, à ce stade, il devrait utiliser la méthode qui va à la base de données et récupère nos enregistrements. Excellent, d'accord, donc maintenant nous savons qu'une ou une API, oui, elle est exécutée dans notre base de données a été créée et les enregistrements sont là en trois, nous sommes en mesure de les récupérer et interagir avec notre base de données via notre API. Donc, avant de partir, je vais juste implémenter l'autre type de GetMethod. J'arrive donc à récupérer des données, n'est-ce pas ? En règle générale, vous voulez que toutes les données soient toutes les données, soit toutes les données soient toutes les données, certaines données. Et la façon dont j'ai déterminé la somme en serait quelques-unes. Donc, MOI SUM. Mais la façon dont vous déterminez le sous-ensemble de données que vous souhaitez passer par un paramètre que vous fournissez , puis vous exécutez une requête basée sur le paramètre. Tout cela pour voir des difficultés dans un APA, vous avez deux types de portes. Avant tout autre type de portes, vous avez le Git, qui renvoie tout. Et puis vous obtenez un identifiant unique qui devrait généralement en renvoyer un ou ne rien renvoyer s'il ne pouvait pas être trouvé, non ? Donc, tout ce que je vais faire, c'est copier et coller cette méthode getter. Je vais modifier l' URL et je vais voir la barre oblique du panier, puis mettre un modèle à barre oblique du panier, puis mettre l'aide d' accolades bouclées et de dire id. Donc je m'attends à ce que lorsque vous appelez ce point de terminaison, vous allez indiquez une valeur d'identifiant, ce qui signifie que vous souhaitez que l' enregistrement soit muni de cet ID. Maintenant, dans cet en-tête de délégué ici, je vais ajouter un paramètre pour faciliter la collecte de l'ID. Donc je vais juste dire int id, virgule panier d'achat DB contextuel. Nous savons que cela est déjà fourni par le système. Cela ne vient donc pas de l'utilisateur, mais nous facilitons la valeur de l'identifiant entrant de l'utilisateur ici. Ensuite, notre requête va ressembler différemment. Nous n'allons pas voir de cartes d'achat bizarres. Allez dans la base de données et trouvez un évier. Et puis je lui donnerai une pièce d'identité. Et puis je peux me qualifier un peu. Non, car soit il va le trouver et retourner, soit nous ne voulons pas le trouver et le retourner. Ou nous voulons peut-être revenir sans téléphoner. Donc, je peux voir que c'est le panier d'achat. C'est donc ma façon de voir ce qui a été récupéré ici, un objet de panier d'achat. Très bien ? Et je peux faire une expression lambda et je vais casser les lignes pour que ce ne soit pas si déroutant. Voyons donc voir. Je voudrais renvoyer un résultat de type, ok, avec les données que vous avez demandées, qui seraient l'objet panier qui a été récupéré. Et j'en suis sûr, je suis sûr que si vous faites un discours familier avec le C-sharp de base. Donc l'expression lambda, pas les lambdas ou une opération ternaire. Oh mon Dieu, je suis désolé pour ça. L'opération ternaire serait donc une opération logique où vous voyez ce que c'est, quelle est la logique que j' évalue ? Est-ce vrai ? Est-ce faux ? Fais ça. Il a été trouvé et c'est un objet de type panier d'achat alors, d'accord, on retourne ça. Sinon, les résultats bouddhistes commencent à ne pas téléphoner. Et cela donnerait le 404 dont nous avons discuté auparavant. Maintenant, un autre que je voudrais probablement faire en ce moment, c' est que si je voulais trouver tous les articles qui ont été ramassés rapidement, n'est-ce pas. Le fait est que les API d'arrestation vous sont, vous pouvez l'utiliser, comment vous pouvez les créer tout ce que vous voulez. Vous devez simplement vous assurer de respecter les normes. Je peux donc créer un autre important ici à voir ramassé. Donc, s'ils appellent ce point de terminaison, c'est juste censé renvoyer les éléments qui ont été ramassés. Parce que rappelez-vous où cette fleur vous voyez la ramassée ou non ramassée. Donc, s'il est ramassé, seuls ceux qui devraient revenir ici. Cela va tout montrer. Et celui-ci ne va rapporter qu'un seul objet. Très bien, jusqu'à présent, ce que je vais faire, c'est dire que les paniers de shopping db dot pointent où. Et puis nous avons mis dans notre expression Lambda et notre état où il est ramassé. Très bien ? Et parce que c'est booléen, je peux simplement le laisser comme ça. Et puis j'ai juste dit à Piracy de lister, ce qui est notre déclaration d'exécution pour ou si la déclaration de cours. Et c'est tout. Et à peu près, nous venons de créer trois points de terminaison get en quelques minutes, en quelques minutes. Donc, une fois que vous arrivez à tout, voulez ne recevoir que des objets récupérés. Je ne veux pas obtenir quelque chose spécifiquement par Adi, alors permettez-moi de le faire rapidement afin que nous puissions évaluer ou travailler. Très bien, donc nous avons un swagger, nous avons déjà testé s'embêtent également avec celui-là. Nous savons que nous avons au moins un élément qui a été ramassé était une vraie personne pour l' essayer et l'exécuter. Et je ne devrais pas tout récupérer à la place, je ne reçois que le seul objet qui est ramassé, son vrai Excellent. Et puis si j'en veux un par pièce d'identité, je peux voir tout essayer. Je n'ai fourni que la pièce d'identité d'un seul. L'enregistrement que je reçois Buck a une carte d'identité, non ? Si j'ai fourni une pièce d'identité de dix, sachant que je ne sais pas ce que j'ai demandé dix je reçois cela pour les quatre réponses non trouvées. Donc, toutes les réponses fonctionnent, n'est-ce pas ? Remarquez que quand il a eu du succès, on a retrouvé un accord de 200. Très bien, donc c'est la réponse O key à 100 est correcte. Donc, lorsque vous voulez être précis, vous pouvez voir des résultats qui sont corrects. Si vous retournez quelque chose, il sera automatiquement activé. D'accord ? C'est donc vraiment pour nous de créer ou d'obtenir des points de terminaison. 7. Explorer la méthode PUT: Très bien, les gars, donc nous avançons dans notre aventure et nous allons passer à la méthode put, non ? Ce que nous avons jusqu' ici serait d'obtenir des méthodes que nous pouvons récupérer, mais que se passe-t-il si nous en avons besoin pour les modifier ? J'ai peut-être fait une erreur quand j'ai créé l'objet, quelque chose comme ça, non ? Je dois donc mettre la méthode PUT. Le put prend donc à peu près les nouvelles données , puis indique que la base de données a remplacé les anciennes données par ces nouvelles données. C'est essentiellement tout ce qui se passe dans les sorties. Donc pour faire monter notre point de terminaison, je vais juste dire les ports de carte points. Et comme je l'ai dit, vous aurez mis à jour la carte. Et puis la méthode que vous voulez à peu près après, n'est-ce pas ? Nous allons maintenant insérer notre modèle de chaîne ou notre URL. Donc généralement, le port ressemble à ce à quoi ressemble ce modèle. Donc, on obtient le même code oblique de panier, n'est-ce pas ? Et puis nous voyons est sink et int id. Ensuite, nous allons prendre un objet du type que nous mettons à jour. En d'autres termes, nous allons mettre à jour un article de panier d'achat. Cela signifie que si vous m'envoyez un enregistrement à mettre à jour dans ma base de données, vous devez évidemment m' envoyer l'enregistrement que vous souhaitez remplacer. Cet enregistrement serait-il cet ID, quelles sont les données que vous souhaitez remplacer ? Essentiellement, c'est tout ce que c'est. Je dois donc mettre un paramètre de type panier, panier d'achat. Rappelez-vous donc que id arrive par le modèle, mais le port à demander enverrait généralement les données pas dans le paramètre est comme ce qu'il ferait partie de la requête, le corps. Nous verrons donc cela dans quelques int id, panier d'achat, paniers. Et bien sûr, nous avons besoin d'une représentation de notre contexte DB. Et ce n'est qu' un grand délégué. Et puis nous pointons le point-virgule sur cette parenthèse. Maintenant, que dois-je faire ? La première chose est que je veux m' assurer que tout ce que vous essayez de mettre à jour existe réellement. S'il n'existe pas, je ne trouverai vraiment pas d'enregistrement que vous essayez de mettre à jour. Je vais donc faire quelque chose comme ce que j'ai fait ici. Je suis allé voir un poids, la méthode de recherche, mais avant cela, je dois l' attribuer quelque part. Donc var nous permet de voir que l'enregistrement est égal à regarder dans les paniers et trouver l'enregistrement avec cet identifiant, n'est-ce pas ? Et en fait, permettez-moi de revenir un peu plus tôt, de supprimer cette ligne. Ce qui se passe, c'est que nous allons faire plusieurs choses. Donc, contrairement aux autres où il y avait des monolignes, nous allons avoir un certain nombre de choses à faire pour que notre délégué ne puisse vraiment pas nous permettre de mettre plusieurs lignes. Je dois donc mettre des accolades bouclées au lieu de ce corps délégué. Et je vais juste fermer ça. Et puis à l'intérieur de ces accolades, je peux maintenant insérer les différentes lignes de code que je veux. Donc ici, je peux voir que var record est égal aux paniers d'achat db dot qui trouvent asynchrone. Et puis je peux finir avec le point-virgule. Très bien ? Il s'agit donc d'un style de codage différent. C'est un peu plus fonctionnel que procédural, comme vous seriez probablement habitué aux deux. Il s'agit simplement de s' entraîner à rendre permanent. Je voulais donc voir si un enregistrement et généralement j'aime vérifier le négatif d'abord. Donc, si l'enregistrement est nul et que vous pouvez vérifier la valeur null en voyant l'équivalent à null ou si vous pouvez réellement voir qu'il est null. Celui-ci lirait probablement un peu mieux. Si c'est nul, je vais juste retourner des résultats, des points introuvables. Je n'ai pas trouvé le dossier que vous disiez essayer de l'ouvrir ? Non. Si cela dépasse cette partie, nous allons vouloir faire cette mise à jour. Je suis donc allé voir un record de points, puis je vais devoir faire pipi et rester légal par chaque méthode désolé, chaque propriété qui est entrée et ne pas y être. donc enregistrer ici ce qu'il y a dans la base de données. panier représente ici données du panier d'achat entrantes, la charge utile, le corps de la demande avec les nouvelles données. Je ne sais pas si vous changez de nom. Je ne sais pas quoi changer. Donc pour être sûr après tout mettre à jour. Donc, si vous êtes habitué à SQL et à mettre à jour des instructions dans SQL, vous savez que vous devez modifier chaque élément d'une instruction SQL juste pour être sûr, n'est-ce pas ? Il est donc ramassé, il est ramassé. Qu'avons-nous d'autre ? Nous avons eu de la quantité. Je ne pense pas que nous ayons quelque chose de mondial. Impossible de mettre à jour l'ID. Très bien, nous voudrions mettre à jour l'ID de l'enregistrement. Donc, après avoir effectué tous ces changements, ce que nous voudrions faire, c'est que j'attendrai, sauvegarde de points db change un lavabo, puis nous pourrons revenir. Ainsi, chaque fois que nous effectuons une requête HTTP qui n'a pas nécessairement quoi que ce soit à renvoyer, ce que nous voyons n'est pas de contenu. C'est donc le bourgeon de Solon. Je ne vais pas revenir. D'accord, mais après l'opération de mise à jour, je n'ai pas vraiment besoin de vous rendre les données que vous me donnez simplement parce que vous les avez déjà. Je dirais donc pas de contenu, ce qui signifie à peu près que je n'ai rien à revenir. Mais c'est un outil pour, on y va. Donc, il est dit en gros que je n'ai rien à vous retourner, mais votre opération a été bonne. Tout va bien à ce moment-là, n'est-ce pas ? Essayons donc notre opération. Je vais donc juste courir sans débogage. Et Swagger est sur la balle avec le code couleur, donc il devient bleu et nous avons mis de l'orange. Je peux l'essayer. Personne. Je vous verrai dans l'ID va dans le paramètre. Je voyais également que le reste des données se trouve dans le corps de la demande. Voici donc où je dis que je veux mettre à jour l'enregistrement avec l'ID1. Et puis quelles sont les données que je veux envoyer ? Ce sont donc des choses risquées. Et dans mon cours complet sur l'API de bout en bout, je souligne les dangers d'avoir certains champs exposés dans la vie PUT et post-endpoints. Vous pouvez suivre ce cours. Mais encore une fois, je garde les choses simples ici, n'est-ce pas ? Mais en général, vous voudriez prendre cette valeur d'ID ou vous pouvez écrire le code comme nous l'avons fait sans deux-points pour la valeur d'identification emprisonnée. Disons que je change ces valeurs, n'est-ce pas ? Enregistrez donc avec l'ID1, regardons ça. Non. Donc, si je vais à l'obtenir, essayez-le et dites Afficher l'enregistrement avec l'ID1. Il va me montrer le savon d'article ID1. Donc la quantité trois gros haut est fausse. Je ne vais rien changer dans ce corps de demande. Ce corps de demande représente les mêmes champs et valeurs correspondantes que ceux que l'on peut attendre pour saisie de notre panier d'achat. Donc, si j'appuie sur Execute, ce qui arrivera, c'est que les quatre ont réussi. Et si je retourne en arrière et que je récupère cet enregistrement avec ID1, je vais juste l' exécuter à nouveau. Maintenant, nous allons voir cela ressembler à ce que nous venons d'envoyer en tant que corps de requête. Donc, si je veux changer ça pour fredonner et ramasser dix maisons, non ? Exécute. Tout ce qu'il fait, c'est prendre tout ici. Et l'idée est qu' elle va simplement remplacer ce qui se trouve dans la base de données. On y va. Très bien, donc quelques choses sur ce qu'Entity Framework a fait. Premièrement, lorsque nous récupérons nos dossiers, nous les récupérons. Et il y a cette fonctionnalité appelée camionnage qui est activée dans une récupération comme celle-ci avec le camionnage, toutes les modifications que vous apportez à l'une des propriétés sont les valeurs. Vous pouvez simplement appeler Enregistrer les modifications. Et il saura automatiquement que cela a été modifié parce qu'il suivait les valeurs. Donc, une fois cette ligne exécutée, il sait que cet enregistrement n' est pas une citation sans citation sale. Donc, quand vous voyez si GnG regarde cet enregistrement et exécute les modifications qui ont été apportées, c' est et exécute les modifications qui ont été apportées, peu près ce qui se passe, n' est-ce pas ? Il existe d'autres moyens car vous pouvez récupérer des données sans suivi. Ce qui arrive, c'est que lorsque vous avez des centaines d'enregistrements, vous ne souhaitez probablement pas effectuer de suivi car cela peut entraîner des problèmes de performances. Vous verriez donc les personnes qui suivent davantage leurs requêtes. Mais c'est généralement plus pour les applications qui atteignent cet état de conservation. Jusqu'à présent une API n' existe pas vraiment, il n'y a pas vraiment d' état qui est récupéré. Et ce n'est qu'un moment enseignant. Je vous aide juste à comprendre ce qu'est le suivi et pourquoi cela a pu fonctionner comme ça sans que nous appelons db dot update. Très bien. C'est donc à peu près tout pour nous de rassembler la production. Vous pouvez donc penser toutes les sorties que vous voudrez peut-être configurer. Mais pour non, celui-là est assez bien. 8. Explorer la méthode POST: Notre gars. Examinons donc la création de notre méthode de publication. Donc, juste pour le faire simplement et rapidement, je vais juste copier la méthode put et la coller à nouveau. Et nous allons voir un poteau de serpillière. Ce point de terminaison ne veut pas avoir de paramètre dessus. Donc, ce sera juste un panier d'achat oblique. Ensuite, nous allons prendre ce spiromètre et nous n' attendons que la charge utile dans le corps de la demande, n'est-ce pas ? que cet objet de panier soit ce que nous attendons d' obtenir deux bases de données Editor en termes de code, nous n'avons pas à faire de vérification. Il suffit d' ajouter cet article de panier à la base de données. Je vais juste dire panier db dot. Ou je pourrais juste dire db dot bizarre. Et puis nous lui donnons juste cet objet de panier. Ensuite, nous sauvegardons les modifications. Ensuite, ce que nous allons renvoyer serait une réponse Created. Donc créé aurait un outil, n'est-ce pas ? L'outil 1 est le code d'état. C'est ainsi créé. Vous pourriez aussi dire quelque chose de plus semblable à créé pour l'itinéraire. Vous pouvez donc me donner le nom de la racine et d'autres trucs fantaisistes. Mais je vais simplement garder les choses simples, créées. Et ensuite, nous allons juste lui rendre quelques données. Il sait donc qu'il est créé dans un panier d'achat oblique. La réponse aura donc la barre oblique du point de terminaison, puis l'ID. Donc, en gros, ce que nous voyons, c'est que si vous allez réduire les paniers avec l'ID de point du panier, alors vous pouvez trouver cette méthode, trouver ces données, désolé. Ensuite, nous retournons l'objet réel. Donc, essentiellement créé et nous lui indiquons la chaîne où elle peut aller pour voir les données créées. Il s'agit ensuite de la charge utile réelle de données côté de l'itinéraire vers lequel vous pouvez vous rendre. Et c'est essentiellement ça. Essayons donc cet ancien. Donc le codage couleur c'est qu'une fois de plus, nous avons notre méthode post ici. Essayez-le. Oh, et je ne devrais pas donner une idée lorsque je crée, mais nous avons déjà discuté de cela, que nous gardons les choses simples ici pour l'instant. Essayons un autre objet. Cette fois. Je veux des céréales, et je veux deux boîtes de céréales. Et il n'a pas encore été repris. Ainsi, lorsque nous exécutons cela, cela représente nos objets qui étaient ensuite envoyés à la base de données et que C est créé, il obtient l'ID et tout est là. Donc, si je fais tout et que je l'exécute, alors je verrai 123 et notre article nouvellement créé, l'article quatre. Et c'est vraiment tout pour toutes les méthodes post. Une fois de plus, nous avons attendu la charge utile, qui a ensuite obtenu ce qui va causer désérialisation dans cet objet. Ensuite, nous l'avons ajouté à la base de données, puis nous sauvegardons les modifications. Donc, ce que vous verriez avec Entity Framework Core, c'est que vous pourriez réellement dire db dot add, et add prend un certain type. Il ne sait pas vraiment quel type peut être tenté. Mais tant qu'il est hors de l'entité ou tant qu' il peut le trouver dans le contexte de la base de données et que vous n' aurez aucun problème. Vous verriez également le point db , puis la table spécifique, puis cette annonce, n'est-ce pas ? Donc je vous montre juste que vous pourriez faire un panier d'achat vraiment db dot. Et puis il sait qu'il suffit de sauvegarder les modifications et qu'il trouvera la table appropriée à mettre dans les données. Et nous avons vu que cela fonctionne. C'est donc tout pour notre méthode post. 9. Explorer la méthode SUPPRIMER: Nous sommes de retour et cette fois, nous allons examiner la méthode de suppression. Nous allons donc supprimer la carte. Une fois de plus, je vais prendre notre PUT et ensuite nous allons simplement moderniser pour être supprimés. Très bien ? Je suis sûr que vous savez ce que c'est, mais je sais que l'ordre dans lequel vous mettez les méthodes n'a pas vraiment d'importance . Ce n'est pas parti faux, celui qui est exécuté en premier sur notre troisième parce que ce n'est pas une question d'ordre chronologique ou l'ordre de la méthode est celui qui est demandé. 0,1 chose que je dois souligner, c'est que vous ne devriez jamais avoir deux des mêmes méthodes avec le même point de terminaison. Revenons donc au bon. Nous avons plusieurs gets, mais remarquez que chacun a une adresse de point de terminaison différente, n'est-ce pas ? Donc, si je devais me procurer des méthodes avec les mêmes paniers à barres obliques, cela poserait un problème. Mais parce que j'ai cartographié obtenir un Nmap posts, où est-ce que c'est pour bien les obtenir  ? Mon poste. Et tous les deux comment réduire le panier d'achat, cela ne provoque pas de crash parce que un est allumé, l'autre est post. Donc, si j'ai oublié de changer cela et d'ajouter les deux entrées Map avec la même valeur de point de fin. Cela causerait simplement un problème. Regardons vraiment ça. Il est bon de voir ces erreurs afin de savoir ce que nous diagnostiquons lorsque nous sommes confrontés à ces défis. Lorsque vous faites cela et résolvez vos charges, cela vous dira simplement que vous détestez que le chargement ne donne pas plus de données que cela. Si vous obtenez quelque chose comme ça, revenez en arrière et vérifiez que vous ne commettez pas cette erreur. Une solution simple est donc de dire carte, supprimer. Et il va falloir conserver le même point de terminaison parce que nous voulons un guide d'achat. J'ai besoin de l'identifiant de ce que nous allons supprimer, mais ce dont nous n'avons pas besoin, sont les données que nous allons supprimer car nous pouvons toujours utiliser l'ID pour trouver l'enregistrement. Nous obtenons donc le record. S'il n'est pas trouvé, nous retournons introuvables. Et puis ce que je vais faire, c'est juste dire db dot. Ce serait db dot remove. On y va. Parfois, j'oublie ces choses. Donc db dot remove et nous supprimerions l'enregistrement que nous avons trouvé avec cet ID. Nous sauvegardons les modifications, donc j'appuie simplement sur Enregistrer. Et ce qui se passe, c'est qu' il existe dans Visual Studio 2022 une fonctionnalité appelée Hot Reload. C'est donc cette boule de feu ici. Vous pouvez donc activer cela lorsque vous enregistrez, il effectue automatiquement un rechargement à chaud. Cela pourrait vous inciter à penser que ça m'incite. Mais vous pouvez toujours appuyer sur le rechargement à chaud. Ensuite, s'il ne peut pas simplement le recharger, vous pouvez simplement dire reconstruire et appliquer les modifications. Et il fera ce qu' il doit faire en arrière-plan pendant que vous êtes toujours en cours d'exécution sans débogage. Et lorsque vous exécutez sans débogage, cette fenêtre de console est ouverte. Parfois, vous pouvez essayer quelque chose, mais je ne travaille pas correctement. Il suffit de vérifier la fenêtre de la console. se peut que vous deviez le fermer, puis recommencer. Quoi qu'il en soit, Hot Reload nous permet simplement recharger notre doc Swagger. Je sais que nous voyons ou supprimons correctement le point de terminaison. Ensuite, si je l'essaie et que j'essaie de supprimer un enregistrement avec l'ID pour lequel nous venons de créer. Et c'est ce que nous exécutons. Nous voyons que nous retournons tout ce contenu. La suppression est donc un autre point final pour lequel vous pouvez pas renvoyer de contenu, n'est-ce pas ? C'est très bien. La fenêtre de la console, pendant que nous sommes en mode développement, vous verrez ces requêtes être recrachées là-dessus dans la console. Et cela pourrait vous être utile de voir ce qui est généré lorsque vous exécutez ces commandes EF Core au pied droit, bien que nous n'ayons pas nécessairement besoin de nous concentrer là-dessus. Et à ce stade, notre API de foule est opérationnelle. Maintenant, quand nous reviendrons, nous allons simplement nettoyer notre code et le rendre un peu plus présentable. 10. Test API avec Swagger Doc: Très bien, alors revenons-en là-dessus et essayons ça. Je vais donc juste courir sans les déboguer un peu plus rapidement. Et nous allons simplement utiliser l' outil Swagger pour tester cette API. Et maintenant, une alternative à Swagger aurait été comme un facteur ou quelque chose de similaire. Mais Saga est capable, donc nous allons simplement l'utiliser maintenant. Donc, lorsque nous élargirons notre objectif, cela implique que nous nous remettrons en place. collection verra l'échantillon, l'objet exemple de ce que nous allons récupérer. Et remarquez les accolades carrées, les dépeints qu'il s' agira d'un tableau d'objets. Prenons, essayons et exécutons à quel point il va réellement sur les requêtes de la base de données, et il y a tous les exemples de voitures que nous aurions saisis, n'est-ce pas ? Maintenant, si j'essaie d'obtenir une pièce d'identité, laissez-moi essayer celle-ci. Alors, essayez tout. Ça dit, donne-moi l'idée, je vais en donner dix. Et nous récupérons la réponse 200 avec la voiture avec la carte d'identité dix. Je l'ai essayé avec 100. Je n'ai pas 100 voitures. Cette fois, je me suis fait acheter ça pour les quatre parce qu'elle n'a pas trouvé cette voiture. Mauvaise idée, non ? Vous pouvez prêter attention aux URL de réponse. À savoir le, c'est ce que nous appelons l'URL de base car c'est le serveur. Et alors ce serait le chemin, et alors ce sera notre valeur d'identification, n'est-ce pas ? Il est donc bon de prêter attention à ces choses car lorsque nous écrivons du code pour interagir avec l'API, nous devons imiter ce type d' URL afin de vérifier que tout obtenu par ID fonctionne. Essayons le Pulitzer. Si j'ai essayé de modifier la voiture avec ID1, nous allons la transformer en une chaîne, une chaîne, une chaîne, une chaîne, une chaîne. Laissez-moi d'abord récupérer la voiture avec l'ID1 afin que nous puissions voir à quoi elle ressemblait. C'est donc la voiture avec la pièce d'identité et nous en prenons une copie rapide. C'est une Honda Fit, l'ABC de Vinny. Maintenant, quand je lance ça, je remarque que je devrais mettre tous les détails et avoir tendance à mettre à jour la largeur. Donc, si je laisse les valeurs par défaut et que je clique sur Exécuter, cela ne me dira pas de contenu, ce qui signifie qu'il a réussi. Si j'essaie de récupérer cette voiture à nouveau , je vais voir qu'elle ne fonctionne pas. Mettons le cordon. Et mon bourgeon. C'est ça, c'est mes erreurs idiotes. Donc, j'ai vraiment mélangé les devoirs que j'aurais dû attribuer. Notez que la valeur arrive par la voiture. Je m'en excuse donc. Maquillage que j'ai sur mon rechargement à chaud sur Save, donc je devrais pouvoir revenir en arrière et essayer à nouveau. C'est donc exécuté. Nous voyons une Honda Fit et tout. Et quand j'ai essayé d'exécuter ici, j'ai eu l'outil pour. Donc non, je vois, on y va. Maintenant, nous voyons que tout a changé en chaîne. Mon idiot erreur les gars. Cela fonctionne donc. C'est pourquoi les tests sont importants. Très bien, permettez-moi de revenir à ma charge utile d'origine , puis de recommencer. Et ensuite, nous pouvons vérifier que nous voyons maintenant les données originales, bien visibles. Ensuite, le dernier est la suppression. Alors, lequel devrais-je supprimer ? Laissez-nous quand même que je ne suis pas je ne veux pas voir quel genre de voiture je n'aime pas. Ce que je vais supprimer. La voiture qui m'intéresse le moins dans cette liste serait la voiture avec la carte d'identité quatre. Ce sera trop petit à mon goût. Nous y trouvons donc l'outil qui suggère qu' il a été terminé avec succès. Donc, si je retourne et que j'exécute, il n'y a plus de voiture avec les quatre IED. Tout comme ça, notre code fonctionne. 11. Examen API: Très bien les gars, donc la dernière écoute nous a laissé avec notre API de travail qui effectue des opérations brutes de base. Ce que nous ne voulons pas, c'est un code d'accès. Nous ne voulons pas les devis prévisionnels. Je suis allé enlever ça. Je vais également supprimer Record en bas. Et pour l'instant, tout ce que nous avons, c'est le code dont nous savons absolument besoin. Sachez qu'il existe différentes manières d'organiser votre API minimale, car vous pouvez votre API minimale, car vous pouvez créer des méthodes auxquelles vous obstruez le code. Vous pouvez le placer dans une autre classe, puis l' appeler comme intergiciel. Il existe plusieurs façons de le faire. Je ne vais vraiment pas entrer dans toutes ces façons, n'est-ce pas ? Non. Mais au moins à la fin de cet exercice, vous saurez comment créer une API en utilisant le style de codage minimal qui peut faire face à la base de données.