{"product_id":"138884","title":"Apprendre la programmation backend avec FastAPI et une architecture propre ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPeHtV6MKZ359uqOYEjlK4tZnoyY.png?v=1765069973\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Apprendre la programmation backend avec FastAPI et une architecture propre \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/133976149\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eIntroduction au livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e  \u003cdiv\u003e\n\u003cb\u003eFastAPI : moderne, rapide et facile à utiliser\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e FastAPI, basé sur Python, simplifie la création d'API par rapport à Flask et la rend plus légère que Django.\u003cbr\u003e Ce livre vous guide dans la création de logiciels backend avec une architecture propre utilisant FastAPI.\u003cbr\u003e L'architecture propre nécessite davantage de code à mesure que ses couches s'allongent, mais FastAPI, qui facilite la division en couches, est un framework web idéal pour sa mise en œuvre. Pour créer une application TIL, nous commençons par apprendre les concepts et les fonctionnalités de FastAPI et de l'architecture propre. Ensuite, nous abordons l'inscription des membres, l'injection de dépendances, les fonctionnalités CRUD, JWT, la configuration des variables d'environnement, la mise en œuvre des couches de l'architecture propre et la rédaction des tests.\u003cbr\u003e En appliquant une architecture propre, vous obtiendrez une arme puissante appelée FastAPI.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e Vous pouvez consulter un aperçu du contenu du livre.\u003cbr\u003e \u003cspan\u003eAperçu\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindice\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Avis du lecteur bêta ix\u003cbr\u003e Début xii\u003cbr\u003e À propos de ce livre xiv\u003cbr\u003e \u003cbr\u003e\u003cb\u003eCHAPITRE 1 Création d'un environnement de développement FastAPI 1\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 1.1 Introduction à FastAPI 1\u003cbr\u003e 1.2 Environnement virtuel et gestion des dépendances avec ForeTree 5\u003cbr\u003e 1.3 Bonjour, FastAPI 10\u003cbr\u003e 1.4 Documentation de l'API 14\u003cbr\u003e 1.5 Configuration de la base de données 19\u003cbr\u003e 1.6 Applications à développer à partir du livre : TIL 22\u003cbr\u003e 1.7 Finale 23\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 2 Architecture propre 25\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 2.1 Pourquoi l'architecture est nécessaire 25\u003cbr\u003e 2.2 Diviser pour mieux régner 29\u003cbr\u003e 2.3 Les quatre principales couches de l'architecture propre 30\u003cbr\u003e __2.3.1 Couche Domaine (Entité) 32\u003cbr\u003e __2.3.2 Couche Application (Cas d'utilisation) 33\u003cbr\u003e __2.3.3 Interface (Adaptateur d'interface) Couche 34\u003cbr\u003e __2.3.4 Infrastructure (Cadre et pilote) Couche 35\u003cbr\u003e 2.4 Principe d'inversion de dépendance 36\u003cbr\u003e 2,5 Arrivée 37\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 3 : Inscription 39\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 3.1 Domaine utilisateur 39\u003cbr\u003e 3.2 Cas d'utilisation relatif à l'adhésion 41\u003cbr\u003e __3.2.1 ULID 41\u003cbr\u003e __3.2.2 Sauvegarde utilisateur 42\u003cbr\u003e __3.2.3 Vérification des utilisateurs dupliqués 44\u003cbr\u003e __3.2.4 Chiffrement du mot de passe 45\u003cbr\u003e 3.3 Interface d'inscription des membres 47\u003cbr\u003e __3.3.1 Routeur API 47\u003cbr\u003e __3.3.2 Validation à l'aide de Pydantic 48 \u003cbr\u003e3.3.3 Modifier le code d'état des erreurs de validation en 400 Mauvaise requête 50\u003cbr\u003e __3.3.4 Appel du cas d'utilisation Créer un utilisateur 52\u003cbr\u003e __3.3.5 Routeur basé sur les classes 53\u003cbr\u003e 3.4 Informations persistantes sur les membres 54\u003cbr\u003e __3.4.1 Application SQLAlchemy ORM 54\u003cbr\u003e 3.4.2 Création de tables et gestion des révisions avec Alembic 56\u003cbr\u003e __3.4.3 Implémentation du référentiel utilisateur 62\u003cbr\u003e 3.5 Finir 65\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 4 Injection de dépendances 67\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 4.1 Dépend 68\u003cbr\u003e 4.2 Injecteur de dépendances 69\u003cbr\u003e 4.3 Conclusion 74\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 5 Opérations CRUD pour les ressources des membres 75\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 5.1 Ajout des propriétés de mémo utilisateur 75\u003cbr\u003e 5.2 Mise à jour des informations utilisateur 78\u003cbr\u003e 5.3 Afficher la liste des utilisateurs 82\u003cbr\u003e 5.3.1 Création de données utilisateur pour les tests 82\u003cbr\u003e __5.3.2 Requête de liste d'utilisateurs 82\u003cbr\u003e __5.3.3 Pagination 84\u003cbr\u003e 5.4 Retrait d'abonnement (Suppression d'utilisateur) 88\u003cbr\u003e 5.5 Validation Pydantique 91\u003cbr\u003e __5.5.1 Demande d'inspection des paramètres\/de la carrosserie 91\u003cbr\u003e __5.5.2 Modèle de réponse pydantique 95\u003cbr\u003e 5.6 Arrivée 97\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 6 Programmation asynchrone 99\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 6.1 Comment gérer la concurrence en Python 99\u003cbr\u003e 6.2 Traitement asynchrone : notions de base dans FastAPI\u003cbr\u003e 6.3 Critères d'application asynchrone 104 \u003cbr\u003e6.4 Conclusion 105\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 7 Connexion 107\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 7.1 JWT 107\u003cbr\u003e __7.1.1 En-tête 109\u003cbr\u003e __7.1.2 Charge utile 110\u003cbr\u003e __7.1.3 Signature 111\u003cbr\u003e 7.2 Connexion 112\u003cbr\u003e 7.3 Authentification\/Autorisation JWT 116\u003cbr\u003e 7.3.1 Ajout d'un rôle à un jeton 116\u003cbr\u003e 7.3.2 Authentification\/autorisation API pour les utilisateurs généraux 118\u003cbr\u003e __7.3.3 Authentification\/Autorisation de l'API d'administration 121\u003cbr\u003e 7.4 Finale 124\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 8 VARIABLES ENVIRONNEMENTALES 125\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 8.1 dotenv 126\u003cbr\u003e 8.2 config.py : Module de gestion des variables d’environnement 127\u003cbr\u003e 8.3 Application des variables d'environnement 128\u003cbr\u003e 8.4 Arrivée 130\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 9 TIL Note 131\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 9.1 Implémentation de la couche domaine 132\u003cbr\u003e 9.2 Implémentation de la couche application 134\u003cbr\u003e 9.3 Implémentation de la couche d'interface 139\u003cbr\u003e __9.3.1 Création de notes 140\u003cbr\u003e __9.3.2 Afficher la liste des notes\/Afficher les détails de la note 141\u003cbr\u003e Note de mise à jour __9.3.3 143\u003cbr\u003e __9.3.4 Supprimer la note 144\u003cbr\u003e __9.3.5 Recherche de notes par nom d'étiquette 144\u003cbr\u003e 9.4 Mise en œuvre de la couche infrastructure 145\u003cbr\u003e __9.4.1 Remarque, Modélisation de la table des étiquettes 145\u003cbr\u003e __9.4.2 Migration de table 147\u003cbr\u003e __9.4.3 Répertoire de notes : 150 vues\u003cbr\u003e __9.4.4 Référentiel de notes : Création de notes 152\u003cbr\u003e __9.4.5 Référentiel de notes : Mise à jour des notes 153 \u003cbr\u003e__9.4.6 Stockage des notes : Suppression des notes 154\u003cbr\u003e __9.4.7 Stockage des notes : Affichage des notes par nom d’étiquette 155\u003cbr\u003e 9,5 Arrivée 156\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 10 Tâches préparatoires : Envoi des courriels de bienvenue 157\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 10.1 Contexte Tâches 158\u003cbr\u003e __10.1.1 Que sont les tâches en arrière-plan ? 158\u003cbr\u003e __10.1.2 Envoi d'e-mails avec des tâches en arrière-plan 160\u003cbr\u003e 10.2 Céleri 166\u003cbr\u003e 10.2.1 Qu'est-ce que le céleri ? 166\u003cbr\u003e __10.2.2 Préférences en matière de céleri 169\u003cbr\u003e __10.2.3 Exemple d'exécution d'une tâche Celery 171\u003cbr\u003e __10.2.4 Envoi d'e-mails avec Celery 176\u003cbr\u003e 10.3 Finale 178\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 11 Intergiciel 179\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 11.1 Exemple de middleware 181\u003cbr\u003e 11.2 Variables de contexte 183\u003cbr\u003e 11.3 Journalisation pour suivre l'activité des utilisateurs 186\u003cbr\u003e __11.3.1 Intergiciel qui stocke les informations utilisateur sous forme de variables de contexte 186\u003cbr\u003e __11.3.2 Journal personnalisé 188\u003cbr\u003e __11.3.3 Sortie du journal avec l'ID utilisateur 190\u003cbr\u003e 11.4 Finale 191\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 12 TESTS 193\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 12.1 Tests de la couche domaine 194\u003cbr\u003e 12.2 Tests de la couche application 196\u003cbr\u003e __12.2.1 Test Double 197\u003cbr\u003e __12.2.2 Tests de cas d'utilisation pour la création d'utilisateurs 198\u003cbr\u003e 12.3 Tests de la couche d'interface 204 \u003cbr\u003e12.4 Tests de la couche infrastructure 206\u003cbr\u003e 12,5 Arrivée 209\u003cbr\u003e\u003cbr\u003e Recherche 212\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eImage détaillée\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4791\/MidCate001\/479008017.jpg\" border=\"0\" alt=\"Image détaillée 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDans le livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Une fois votre API créée, vous devez la communiquer aux autres membres qui l'utiliseront.\u003cbr\u003e Si votre organisation est petite et que vos utilisateurs d'API travaillent dans le même domaine et comprennent le code du framework, le partage du code source ne pose aucun problème.\u003cbr\u003e Mais comment expliquer l'utilisation d'une API à des développeurs front-end qui l'utilisent avec des langages et des technologies différents ? On peut soit la décrire sous forme de texte, soit l'organiser dans un tableur pour une meilleure lisibilité.\u003cbr\u003e Aujourd'hui encore, beaucoup de gens utilisent cette méthode.\u003cbr\u003e Mais tout comme pour les programmes, une fois que la documentation devient obsolète, il est difficile de la modifier.\u003cbr\u003e La meilleure façon de diffuser la documentation est de générer la documentation API à partir de votre code source, et FastAPI prend en charge cette fonctionnalité sans configuration particulière.\u003cbr\u003e --- p.15\u003cbr\u003e \u003cbr\u003eLa règle de dépendance de l'architecture propre stipule que la direction de la dépendance est interne.\u003cbr\u003e Sur le côté gauche de la figure 2-1, il y a des flèches pointant vers l'intérieur depuis la couche extérieure.\u003cbr\u003e Cette flèche indique le sens de la dépendance.\u003cbr\u003e Le format des données est également identique.\u003cbr\u003e Les types de données de haut niveau peuvent être utilisés librement aux niveaux inférieurs.\u003cbr\u003e Toutefois, les composants de haut niveau ne doivent pas dépendre des types de données de bas niveau.\u003cbr\u003e Ceci afin d'isoler et de protéger les éléments internes des changements externes.\u003cbr\u003e Les frameworks ou bibliothèques fournis en externe peuvent être mis à jour indépendamment de notre volonté.\u003cbr\u003e Lorsque de tels changements surviennent, si vous dépendez directement de modules de cette bibliothèque, vous devrez également modifier les éléments internes.\u003cbr\u003e --- p.36\u003cbr\u003e\u003cbr\u003e Les propriétés permettant aux utilisateurs de mettre à jour leurs informations dans la ressource utilisateur sont le nom d'utilisateur et le mot de passe. \u003cbr\u003eNormalement, il serait bizarre de changer de nom, mais dans TIL, ce n'est pas un problème puisque vous utiliserez votre nom comme surnom.\u003cbr\u003e Partons du principe que l'adresse e-mail est une valeur unique qui ne peut être modifiée car c'est la valeur que l'utilisateur utilise pour se connecter.\u003cbr\u003e \/ Reprenons l'implémentation en commençant par la couche domaine.\u003cbr\u003e Commencez par déclarer une fonction permettant de rechercher un utilisateur par son ID utilisateur dans IUserRepository et une fonction permettant de mettre à jour la ressource utilisateur.\u003cbr\u003e La raison pour laquelle nous avons besoin d'une fonction de recherche d'utilisateurs est de trouver la cible à mettre à jour.\u003cbr\u003e Si l'utilisateur n'existe pas dans la base de données, une erreur se produit.\u003cbr\u003e\u003cbr\u003e --- p.78\u003cbr\u003e\u003cbr\u003e Lors de l'exploitation d'un système, il arrive que vous ayez besoin d'attribuer différents rôles aux utilisateurs connectés.\u003cbr\u003e L'accès aux ressources est restreint en fonction des rôles, et les rôles sont regroupés et gérés de manière hiérarchique. \u003cbr\u003eParmi les API listées ci-dessus, les utilisateurs ne devraient pouvoir appeler que les API pour lesquelles ils ont l'autorisation d'exécution.\u003cbr\u003e Les utilisateurs peuvent uniquement utiliser l'API de suppression d'utilisateur, c'est-à-dire retirer leur adhésion, et l'API de mise à jour des informations utilisateur, qui met à jour leurs informations.\u003cbr\u003e Étant donné que les utilisateurs ne devraient pas pouvoir consulter arbitrairement les informations d'autres personnes, disons que seul l'administrateur (c.-à-d. le gestionnaire d'application) peut consulter la liste des utilisateurs.\u003cbr\u003e Par conséquent, une fonction d'autorisation vérifiant les permissions est nécessaire.\u003cbr\u003e La mise en place d'un système d'autorisation adéquat dépasse le cadre de cet ouvrage.\u003cbr\u003e Dans ce livre, nous ajoutons simplement une charge utile appelée role, qui signifie rôle, au jeton et vérifions l'autorisation en distinguant si la valeur est USER ou ADMIN.\u003cbr\u003e\u003cbr\u003e --- p.117\u003cbr\u003e\u003cbr\u003e BackgroundTasks est une classe d'assistance fournie par FastAPI.\u003cbr\u003e Cette classe vous permet d'effectuer des tâches en arrière-plan après avoir reçu une requête d'un client. \u003cbr\u003eComme nous l'avons vu dans l'exemple précédent, lors du traitement d'une requête HTTP, si la tâche est longue ou doit être traitée de manière asynchrone, vous pouvez envoyer une réponse au client immédiatement et traiter la tâche en arrière-plan.\u003cbr\u003e Cela améliorera la convivialité du client.\u003cbr\u003e Autrement dit, vous pouvez poursuivre vos autres tâches sans attendre la fin de la requête.\u003cbr\u003e La classe BackgroundTasks facilite la gestion de ces tâches dans votre application FastAPI.\u003cbr\u003e Comme vous pouvez le voir dans l'exemple suivant, vous pouvez l'injecter comme paramètre à votre fonction de point de terminaison et laisser FastAPI gérer le reste.\u003cbr\u003e C'est la même chose que lorsque vous injectez et utilisez directement l'objet Request.\u003cbr\u003e\u003cbr\u003e --- p.158\u003cbr\u003e\u003cbr\u003e Celery (p.Celery) est une file d'attente de tâches distribuées (p.distributed task queue) basée sur les systèmes Unix, utilisée pour traiter et gérer des tâches asynchrones. \u003cbr\u003eIl gère ou planifie principalement les tâches en arrière-plan et les exécute dans un environnement distribué.\u003cbr\u003e Outre Celery, d'autres systèmes de messagerie basés sur Python méritent d'être pris en considération, notamment Redis Queue (p.Redis queue, RQ), Dramatic (p.Dramatiq), Huey (p.huey) et AIOHTTP.\u003cbr\u003e De plus, Kafka (p.Kafka) gagne en popularité ces derniers temps car il offre des performances élevées même dans les systèmes à grande échelle.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- pp.166-167\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eAvis de l'éditeur\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eÉliminez le code spaghetti grâce à FastAPI et à une architecture propre.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e FastAPI s'est classé 14e dans la catégorie « Frameworks et technologies Web » du classement établi par Stack Overflow en 2024.\u003cbr\u003e Parmi les frameworks web Python, il se classe troisième après Flask et Django, et a rapidement rattrapé son retard sur ces derniers depuis son lancement en 2018. \u003cbr\u003eBien que la version 1 n'ait pas encore été officiellement publiée, elle présente de nombreux avantages, notamment d'excellentes performances et une utilisation intuitive, et est adoptée par de nombreuses entreprises, dont Netflix, Uber et Cisco Systems.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Étant donné que FastAPI dispose déjà d'une documentation officielle très bien organisée, ce livre se concentre sur la conception de la structure logicielle utilisant FastAPI et une architecture propre qui maximise la maintenabilité et l'évolutivité.\u003cbr\u003e L'un des facteurs les plus importants dans le développement backend actuel est une architecture efficace et évolutive.\u003cbr\u003e Un système sans architecture « correcte » n'est rien de plus qu'un gros amas de code spaghetti et de boue.\u003cbr\u003e Ce livre en 12 chapitres présente des méthodes pour créer des systèmes maintenables et stables en appliquant une architecture propre basée sur les puissantes fonctionnalités de FastAPI.\u003cbr\u003e \u003cbr\u003eLe chapitre 1 présente brièvement les fonctionnalités de FastAPI, la manière de construire un environnement de développement à l'aide de Fortree et la structure de l'application TIL qui sera créée dans le livre.\u003cbr\u003e Au chapitre 2, nous étudierons l'architecture propre en la divisant en couches de domaine, d'application, d'interface et d'infrastructure.\u003cbr\u003e Dans le chapitre 3, nous implémenterons l'inscription des membres, l'une des fonctions principales du service d'application TIL, en utilisant FastAPI tout en appliquant une architecture propre.\u003cbr\u003e\u003cbr\u003e Au chapitre 4, l'injection de dépendances est introduite dans la fonction d'inscription des membres implémentée au chapitre 3, et au chapitre 5, une API pour la recherche, la modification et la suppression des informations utilisateur est complétée à l'aide de Pydantic.\u003cbr\u003e Le chapitre 6 examine un exemple de traitement asynchrone, l'une des méthodes de gestion de la concurrence dans FastAPI.\u003cbr\u003e Au chapitre 7, nous allons découvrir et appliquer JWT, qui est le plus souvent utilisé pour l'authentification\/autorisation, tout en créant une fonction qui permet aux utilisateurs inscrits au service TIL de se connecter.\u003cbr\u003e \u003cbr\u003eAu chapitre 8, nous examinerons la gestion des valeurs codées en dur dans le code en tant que variables d'environnement, et au chapitre 9, nous examinerons un exemple d'extension des fonctionnalités du service TIL pour gérer les ressources de publication (note) écrites par l'utilisateur.\u003cbr\u003e Le chapitre 10 traite des méthodes de tâches en arrière-plan qui peuvent être appliquées lors du développement d'un serveur avec FastAPI, et le chapitre 11 explique comment utiliser les intergiciels.\u003cbr\u003e Enfin, au chapitre 12, nous écrivons du code de test pour le code que nous avons écrit afin de faciliter l'exécution de tests répétitifs et la construction de systèmes sécurisés.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Ce livre est un guide utile pour les développeurs qui envisagent de meilleures méthodes de conception logicielle au-delà de la simple implémentation fonctionnelle, grâce à FastAPI et à l'architecture propre.\u003cbr\u003e Il sera d'une aide concrète pour les développeurs qui souhaitent construire des systèmes backend stables et évolutifs, notamment dans l'environnement de développement web en constante évolution.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003eContenu principal\u003c\/b\u003e\u003cbr\u003e \u003cbr\u003e● Concepts et fonctions de FastAPI et de l'architecture propre\u003cbr\u003e ● Validation à l'aide de Pydantic\u003cbr\u003e ● Méthode DI et méthode d'application\u003cbr\u003e ● Utilisation de JWT pour l'authentification\/l'autorisation\u003cbr\u003e Traitement asynchrone avec Celery\u003cbr\u003e ● Comment utiliser un middleware qui simplifie les requêtes et les réponses HTTP\u003cbr\u003e ● Comment appliquer les tests unitaires par couche\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \"]\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e SPÉCIFICATIONS DES PRODUITS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate d'émission :\u003c\/strong\u003e 25 octobre 2024\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e \u003cstrong\u003eNombre de pages, poids, dimensions :\u003c\/strong\u003e 232 pages | 580 g | 188 × 245 × 15 mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13 :\u003c\/strong\u003e 9791193926529\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10 :\u003c\/strong\u003e 1193926521 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893326807082,"sku":"138884","price":33.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/b4b14f910375e0e7b3cc01f8e41c0d18.jpg?v=1765396262","url":"https:\/\/librairie.coreenne.fr\/products\/138884","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}