
Apprendre la programmation backend avec FastAPI et une architecture propre
Description
Introduction au livre
FastAPI : moderne, rapide et facile à utiliser
FastAPI, basé sur Python, simplifie la création d'API par rapport à Flask et la rend plus légère que Django.
Ce livre vous guide dans la création de logiciels backend avec une architecture propre utilisant FastAPI.
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.
En appliquant une architecture propre, vous obtiendrez une arme puissante appelée FastAPI.
FastAPI, basé sur Python, simplifie la création d'API par rapport à Flask et la rend plus légère que Django.
Ce livre vous guide dans la création de logiciels backend avec une architecture propre utilisant FastAPI.
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.
En appliquant une architecture propre, vous obtiendrez une arme puissante appelée FastAPI.
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Avis du lecteur bêta ix
Début xii
À propos de ce livre xiv
CHAPITRE 1 Création d'un environnement de développement FastAPI 1
1.1 Introduction à FastAPI 1
1.2 Environnement virtuel et gestion des dépendances avec ForeTree 5
1.3 Bonjour, FastAPI 10
1.4 Documentation de l'API 14
1.5 Configuration de la base de données 19
1.6 Applications à développer à partir du livre : TIL 22
1.7 Finale 23
CHAPITRE 2 Architecture propre 25
2.1 Pourquoi l'architecture est nécessaire 25
2.2 Diviser pour mieux régner 29
2.3 Les quatre principales couches de l'architecture propre 30
__2.3.1 Couche Domaine (Entité) 32
__2.3.2 Couche Application (Cas d'utilisation) 33
__2.3.3 Interface (Adaptateur d'interface) Couche 34
__2.3.4 Infrastructure (Cadre et pilote) Couche 35
2.4 Principe d'inversion de dépendance 36
2,5 Arrivée 37
CHAPITRE 3 : Inscription 39
3.1 Domaine utilisateur 39
3.2 Cas d'utilisation relatif à l'adhésion 41
__3.2.1 ULID 41
__3.2.2 Sauvegarde utilisateur 42
__3.2.3 Vérification des utilisateurs dupliqués 44
__3.2.4 Chiffrement du mot de passe 45
3.3 Interface d'inscription des membres 47
__3.3.1 Routeur API 47
__3.3.2 Validation à l'aide de Pydantic 48
3.3.3 Modifier le code d'état des erreurs de validation en 400 Mauvaise requête 50
__3.3.4 Appel du cas d'utilisation Créer un utilisateur 52
__3.3.5 Routeur basé sur les classes 53
3.4 Informations persistantes sur les membres 54
__3.4.1 Application SQLAlchemy ORM 54
3.4.2 Création de tables et gestion des révisions avec Alembic 56
__3.4.3 Implémentation du référentiel utilisateur 62
3.5 Finir 65
CHAPITRE 4 Injection de dépendances 67
4.1 Dépend 68
4.2 Injecteur de dépendances 69
4.3 Conclusion 74
CHAPITRE 5 Opérations CRUD pour les ressources des membres 75
5.1 Ajout des propriétés de mémo utilisateur 75
5.2 Mise à jour des informations utilisateur 78
5.3 Afficher la liste des utilisateurs 82
5.3.1 Création de données utilisateur pour les tests 82
__5.3.2 Requête de liste d'utilisateurs 82
__5.3.3 Pagination 84
5.4 Retrait d'abonnement (Suppression d'utilisateur) 88
5.5 Validation Pydantique 91
__5.5.1 Demande d'inspection des paramètres/de la carrosserie 91
__5.5.2 Modèle de réponse pydantique 95
5.6 Arrivée 97
CHAPITRE 6 Programmation asynchrone 99
6.1 Comment gérer la concurrence en Python 99
6.2 Traitement asynchrone : notions de base dans FastAPI
6.3 Critères d'application asynchrone 104
6.4 Conclusion 105
CHAPITRE 7 Connexion 107
7.1 JWT 107
__7.1.1 En-tête 109
__7.1.2 Charge utile 110
__7.1.3 Signature 111
7.2 Connexion 112
7.3 Authentification/Autorisation JWT 116
7.3.1 Ajout d'un rôle à un jeton 116
7.3.2 Authentification/autorisation API pour les utilisateurs généraux 118
__7.3.3 Authentification/Autorisation de l'API d'administration 121
7.4 Finale 124
CHAPITRE 8 VARIABLES ENVIRONNEMENTALES 125
8.1 dotenv 126
8.2 config.py : Module de gestion des variables d’environnement 127
8.3 Application des variables d'environnement 128
8.4 Arrivée 130
CHAPITRE 9 TIL Note 131
9.1 Implémentation de la couche domaine 132
9.2 Implémentation de la couche application 134
9.3 Implémentation de la couche d'interface 139
__9.3.1 Création de notes 140
__9.3.2 Afficher la liste des notes/Afficher les détails de la note 141
Note de mise à jour __9.3.3 143
__9.3.4 Supprimer la note 144
__9.3.5 Recherche de notes par nom d'étiquette 144
9.4 Mise en œuvre de la couche infrastructure 145
__9.4.1 Remarque, Modélisation de la table des étiquettes 145
__9.4.2 Migration de table 147
__9.4.3 Répertoire de notes : 150 vues
__9.4.4 Référentiel de notes : Création de notes 152
__9.4.5 Référentiel de notes : Mise à jour des notes 153
__9.4.6 Stockage des notes : Suppression des notes 154
__9.4.7 Stockage des notes : Affichage des notes par nom d’étiquette 155
9,5 Arrivée 156
CHAPITRE 10 Tâches préparatoires : Envoi des courriels de bienvenue 157
10.1 Contexte Tâches 158
__10.1.1 Que sont les tâches en arrière-plan ? 158
__10.1.2 Envoi d'e-mails avec des tâches en arrière-plan 160
10.2 Céleri 166
10.2.1 Qu'est-ce que le céleri ? 166
__10.2.2 Préférences en matière de céleri 169
__10.2.3 Exemple d'exécution d'une tâche Celery 171
__10.2.4 Envoi d'e-mails avec Celery 176
10.3 Finale 178
CHAPITRE 11 Intergiciel 179
11.1 Exemple de middleware 181
11.2 Variables de contexte 183
11.3 Journalisation pour suivre l'activité des utilisateurs 186
__11.3.1 Intergiciel qui stocke les informations utilisateur sous forme de variables de contexte 186
__11.3.2 Journal personnalisé 188
__11.3.3 Sortie du journal avec l'ID utilisateur 190
11.4 Finale 191
CHAPITRE 12 TESTS 193
12.1 Tests de la couche domaine 194
12.2 Tests de la couche application 196
__12.2.1 Test Double 197
__12.2.2 Tests de cas d'utilisation pour la création d'utilisateurs 198
12.3 Tests de la couche d'interface 204
12.4 Tests de la couche infrastructure 206
12,5 Arrivée 209
Recherche 212
Début xii
À propos de ce livre xiv
CHAPITRE 1 Création d'un environnement de développement FastAPI 1
1.1 Introduction à FastAPI 1
1.2 Environnement virtuel et gestion des dépendances avec ForeTree 5
1.3 Bonjour, FastAPI 10
1.4 Documentation de l'API 14
1.5 Configuration de la base de données 19
1.6 Applications à développer à partir du livre : TIL 22
1.7 Finale 23
CHAPITRE 2 Architecture propre 25
2.1 Pourquoi l'architecture est nécessaire 25
2.2 Diviser pour mieux régner 29
2.3 Les quatre principales couches de l'architecture propre 30
__2.3.1 Couche Domaine (Entité) 32
__2.3.2 Couche Application (Cas d'utilisation) 33
__2.3.3 Interface (Adaptateur d'interface) Couche 34
__2.3.4 Infrastructure (Cadre et pilote) Couche 35
2.4 Principe d'inversion de dépendance 36
2,5 Arrivée 37
CHAPITRE 3 : Inscription 39
3.1 Domaine utilisateur 39
3.2 Cas d'utilisation relatif à l'adhésion 41
__3.2.1 ULID 41
__3.2.2 Sauvegarde utilisateur 42
__3.2.3 Vérification des utilisateurs dupliqués 44
__3.2.4 Chiffrement du mot de passe 45
3.3 Interface d'inscription des membres 47
__3.3.1 Routeur API 47
__3.3.2 Validation à l'aide de Pydantic 48
3.3.3 Modifier le code d'état des erreurs de validation en 400 Mauvaise requête 50
__3.3.4 Appel du cas d'utilisation Créer un utilisateur 52
__3.3.5 Routeur basé sur les classes 53
3.4 Informations persistantes sur les membres 54
__3.4.1 Application SQLAlchemy ORM 54
3.4.2 Création de tables et gestion des révisions avec Alembic 56
__3.4.3 Implémentation du référentiel utilisateur 62
3.5 Finir 65
CHAPITRE 4 Injection de dépendances 67
4.1 Dépend 68
4.2 Injecteur de dépendances 69
4.3 Conclusion 74
CHAPITRE 5 Opérations CRUD pour les ressources des membres 75
5.1 Ajout des propriétés de mémo utilisateur 75
5.2 Mise à jour des informations utilisateur 78
5.3 Afficher la liste des utilisateurs 82
5.3.1 Création de données utilisateur pour les tests 82
__5.3.2 Requête de liste d'utilisateurs 82
__5.3.3 Pagination 84
5.4 Retrait d'abonnement (Suppression d'utilisateur) 88
5.5 Validation Pydantique 91
__5.5.1 Demande d'inspection des paramètres/de la carrosserie 91
__5.5.2 Modèle de réponse pydantique 95
5.6 Arrivée 97
CHAPITRE 6 Programmation asynchrone 99
6.1 Comment gérer la concurrence en Python 99
6.2 Traitement asynchrone : notions de base dans FastAPI
6.3 Critères d'application asynchrone 104
6.4 Conclusion 105
CHAPITRE 7 Connexion 107
7.1 JWT 107
__7.1.1 En-tête 109
__7.1.2 Charge utile 110
__7.1.3 Signature 111
7.2 Connexion 112
7.3 Authentification/Autorisation JWT 116
7.3.1 Ajout d'un rôle à un jeton 116
7.3.2 Authentification/autorisation API pour les utilisateurs généraux 118
__7.3.3 Authentification/Autorisation de l'API d'administration 121
7.4 Finale 124
CHAPITRE 8 VARIABLES ENVIRONNEMENTALES 125
8.1 dotenv 126
8.2 config.py : Module de gestion des variables d’environnement 127
8.3 Application des variables d'environnement 128
8.4 Arrivée 130
CHAPITRE 9 TIL Note 131
9.1 Implémentation de la couche domaine 132
9.2 Implémentation de la couche application 134
9.3 Implémentation de la couche d'interface 139
__9.3.1 Création de notes 140
__9.3.2 Afficher la liste des notes/Afficher les détails de la note 141
Note de mise à jour __9.3.3 143
__9.3.4 Supprimer la note 144
__9.3.5 Recherche de notes par nom d'étiquette 144
9.4 Mise en œuvre de la couche infrastructure 145
__9.4.1 Remarque, Modélisation de la table des étiquettes 145
__9.4.2 Migration de table 147
__9.4.3 Répertoire de notes : 150 vues
__9.4.4 Référentiel de notes : Création de notes 152
__9.4.5 Référentiel de notes : Mise à jour des notes 153
__9.4.6 Stockage des notes : Suppression des notes 154
__9.4.7 Stockage des notes : Affichage des notes par nom d’étiquette 155
9,5 Arrivée 156
CHAPITRE 10 Tâches préparatoires : Envoi des courriels de bienvenue 157
10.1 Contexte Tâches 158
__10.1.1 Que sont les tâches en arrière-plan ? 158
__10.1.2 Envoi d'e-mails avec des tâches en arrière-plan 160
10.2 Céleri 166
10.2.1 Qu'est-ce que le céleri ? 166
__10.2.2 Préférences en matière de céleri 169
__10.2.3 Exemple d'exécution d'une tâche Celery 171
__10.2.4 Envoi d'e-mails avec Celery 176
10.3 Finale 178
CHAPITRE 11 Intergiciel 179
11.1 Exemple de middleware 181
11.2 Variables de contexte 183
11.3 Journalisation pour suivre l'activité des utilisateurs 186
__11.3.1 Intergiciel qui stocke les informations utilisateur sous forme de variables de contexte 186
__11.3.2 Journal personnalisé 188
__11.3.3 Sortie du journal avec l'ID utilisateur 190
11.4 Finale 191
CHAPITRE 12 TESTS 193
12.1 Tests de la couche domaine 194
12.2 Tests de la couche application 196
__12.2.1 Test Double 197
__12.2.2 Tests de cas d'utilisation pour la création d'utilisateurs 198
12.3 Tests de la couche d'interface 204
12.4 Tests de la couche infrastructure 206
12,5 Arrivée 209
Recherche 212
Image détaillée

Dans le livre
Une fois votre API créée, vous devez la communiquer aux autres membres qui l'utiliseront.
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.
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é.
Aujourd'hui encore, beaucoup de gens utilisent cette méthode.
Mais tout comme pour les programmes, une fois que la documentation devient obsolète, il est difficile de la modifier.
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.
--- p.15
La règle de dépendance de l'architecture propre stipule que la direction de la dépendance est interne.
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.
Cette flèche indique le sens de la dépendance.
Le format des données est également identique.
Les types de données de haut niveau peuvent être utilisés librement aux niveaux inférieurs.
Toutefois, les composants de haut niveau ne doivent pas dépendre des types de données de bas niveau.
Ceci afin d'isoler et de protéger les éléments internes des changements externes.
Les frameworks ou bibliothèques fournis en externe peuvent être mis à jour indépendamment de notre volonté.
Lorsque de tels changements surviennent, si vous dépendez directement de modules de cette bibliothèque, vous devrez également modifier les éléments internes.
--- p.36
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.
Normalement, il serait bizarre de changer de nom, mais dans TIL, ce n'est pas un problème puisque vous utiliserez votre nom comme surnom.
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.
/ Reprenons l'implémentation en commençant par la couche domaine.
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.
La raison pour laquelle nous avons besoin d'une fonction de recherche d'utilisateurs est de trouver la cible à mettre à jour.
Si l'utilisateur n'existe pas dans la base de données, une erreur se produit.
--- p.78
Lors de l'exploitation d'un système, il arrive que vous ayez besoin d'attribuer différents rôles aux utilisateurs connectés.
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.
Parmi les API listées ci-dessus, les utilisateurs ne devraient pouvoir appeler que les API pour lesquelles ils ont l'autorisation d'exécution.
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.
É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.
Par conséquent, une fonction d'autorisation vérifiant les permissions est nécessaire.
La mise en place d'un système d'autorisation adéquat dépasse le cadre de cet ouvrage.
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.
--- p.117
BackgroundTasks est une classe d'assistance fournie par FastAPI.
Cette classe vous permet d'effectuer des tâches en arrière-plan après avoir reçu une requête d'un client.
Comme 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.
Cela améliorera la convivialité du client.
Autrement dit, vous pouvez poursuivre vos autres tâches sans attendre la fin de la requête.
La classe BackgroundTasks facilite la gestion de ces tâches dans votre application FastAPI.
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.
C'est la même chose que lorsque vous injectez et utilisez directement l'objet Request.
--- p.158
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.
Il gère ou planifie principalement les tâches en arrière-plan et les exécute dans un environnement distribué.
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.
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.
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.
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é.
Aujourd'hui encore, beaucoup de gens utilisent cette méthode.
Mais tout comme pour les programmes, une fois que la documentation devient obsolète, il est difficile de la modifier.
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.
--- p.15
La règle de dépendance de l'architecture propre stipule que la direction de la dépendance est interne.
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.
Cette flèche indique le sens de la dépendance.
Le format des données est également identique.
Les types de données de haut niveau peuvent être utilisés librement aux niveaux inférieurs.
Toutefois, les composants de haut niveau ne doivent pas dépendre des types de données de bas niveau.
Ceci afin d'isoler et de protéger les éléments internes des changements externes.
Les frameworks ou bibliothèques fournis en externe peuvent être mis à jour indépendamment de notre volonté.
Lorsque de tels changements surviennent, si vous dépendez directement de modules de cette bibliothèque, vous devrez également modifier les éléments internes.
--- p.36
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.
Normalement, il serait bizarre de changer de nom, mais dans TIL, ce n'est pas un problème puisque vous utiliserez votre nom comme surnom.
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.
/ Reprenons l'implémentation en commençant par la couche domaine.
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.
La raison pour laquelle nous avons besoin d'une fonction de recherche d'utilisateurs est de trouver la cible à mettre à jour.
Si l'utilisateur n'existe pas dans la base de données, une erreur se produit.
--- p.78
Lors de l'exploitation d'un système, il arrive que vous ayez besoin d'attribuer différents rôles aux utilisateurs connectés.
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.
Parmi les API listées ci-dessus, les utilisateurs ne devraient pouvoir appeler que les API pour lesquelles ils ont l'autorisation d'exécution.
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.
É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.
Par conséquent, une fonction d'autorisation vérifiant les permissions est nécessaire.
La mise en place d'un système d'autorisation adéquat dépasse le cadre de cet ouvrage.
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.
--- p.117
BackgroundTasks est une classe d'assistance fournie par FastAPI.
Cette classe vous permet d'effectuer des tâches en arrière-plan après avoir reçu une requête d'un client.
Comme 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.
Cela améliorera la convivialité du client.
Autrement dit, vous pouvez poursuivre vos autres tâches sans attendre la fin de la requête.
La classe BackgroundTasks facilite la gestion de ces tâches dans votre application FastAPI.
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.
C'est la même chose que lorsque vous injectez et utilisez directement l'objet Request.
--- p.158
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.
Il gère ou planifie principalement les tâches en arrière-plan et les exécute dans un environnement distribué.
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.
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.
--- pp.166-167
Avis de l'éditeur
Éliminez le code spaghetti grâce à FastAPI et à une architecture propre.
FastAPI s'est classé 14e dans la catégorie « Frameworks et technologies Web » du classement établi par Stack Overflow en 2024.
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.
Bien 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.
É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é.
L'un des facteurs les plus importants dans le développement backend actuel est une architecture efficace et évolutive.
Un système sans architecture « correcte » n'est rien de plus qu'un gros amas de code spaghetti et de boue.
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.
Le 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.
Au chapitre 2, nous étudierons l'architecture propre en la divisant en couches de domaine, d'application, d'interface et d'infrastructure.
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.
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.
Le chapitre 6 examine un exemple de traitement asynchrone, l'une des méthodes de gestion de la concurrence dans FastAPI.
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.
Au 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.
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.
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.
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.
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.
Contenu principal
● Concepts et fonctions de FastAPI et de l'architecture propre
● Validation à l'aide de Pydantic
● Méthode DI et méthode d'application
● Utilisation de JWT pour l'authentification/l'autorisation
Traitement asynchrone avec Celery
● Comment utiliser un middleware qui simplifie les requêtes et les réponses HTTP
● Comment appliquer les tests unitaires par couche
FastAPI s'est classé 14e dans la catégorie « Frameworks et technologies Web » du classement établi par Stack Overflow en 2024.
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.
Bien 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.
É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é.
L'un des facteurs les plus importants dans le développement backend actuel est une architecture efficace et évolutive.
Un système sans architecture « correcte » n'est rien de plus qu'un gros amas de code spaghetti et de boue.
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.
Le 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.
Au chapitre 2, nous étudierons l'architecture propre en la divisant en couches de domaine, d'application, d'interface et d'infrastructure.
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.
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.
Le chapitre 6 examine un exemple de traitement asynchrone, l'une des méthodes de gestion de la concurrence dans FastAPI.
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.
Au 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.
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.
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.
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.
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.
Contenu principal
● Concepts et fonctions de FastAPI et de l'architecture propre
● Validation à l'aide de Pydantic
● Méthode DI et méthode d'application
● Utilisation de JWT pour l'authentification/l'autorisation
Traitement asynchrone avec Celery
● Comment utiliser un middleware qui simplifie les requêtes et les réponses HTTP
● Comment appliquer les tests unitaires par couche
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 25 octobre 2024
Nombre de pages, poids, dimensions : 232 pages | 580 g | 188 × 245 × 15 mm
- ISBN13 : 9791193926529
- ISBN10 : 1193926521
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne