# Fetch ## Utilisation des API ## 📩 Le Node Package Manager ## 🌐 Les APIs ### (Application Programming Interfaces) ### 📄 Formats courants des rĂ©ponses { "nom": "Alice", "age": 25, "ville": { "nom": "Le Havre", "codePostal" : "76600" } } ``` --- ### 📄 Formats courants des rĂ©ponses - **XML (eXtensible Markup Language)** - Plus verbeux, utilisĂ© dans certains services ```xml Alice 25 Le Havre 76600 ``` --- ### 📹 Structure d'une requĂȘte API - **Headers** : MĂ©tadonnĂ©es - Type de contenu - Authentification - ... - **Body** : DonnĂ©es envoyĂ©es (Ex: JSON, FormData...) - **Status Codes** : - ✅ `200 OK` : - đŸš« `401 Unauthorized` : - ❌ `500 Internal Server Error` : --- ## 🔐 Authentification par Token --- ## 🔐 Authentification par Token --- ## 🔑 JWT Json Web Token - **Client** : Envoie des requĂȘtes et stocke le JWT - **Serveur d’authentification** : GĂ©nĂšre et signe le token - **Serveur d’API** : VĂ©rifie le token avant d’accorder l’accĂšs --- ## 🔑 JWT Json Web Token ```txt 1. [Client] -> (Email/Mot de passe) -> [Serveur d'Auth] 2. [Serveur d'Auth] -> (JWT signĂ©) -> [Client] 3. [Client] -> (RequĂȘte API avec JWT) -> [Serveur API] 4. [Serveur API] -> (VĂ©rifie JWT) -> [AccĂšs autorisĂ©/refusĂ©] ``` ✅ Avantages : Rapide, sans Ă©tat ⚠ Attention : Ne pas stocker sans protection --- ## 🔑 OAuth 2.0 - **Client** : Application demandant l’accĂšs - **Resource Owner** : L’utilisateur - **Authorization Server** : VĂ©rifie l’utilisateur et gĂ©nĂšre un token - **Resource Server** : API qui protĂšge les donnĂ©es --- ## 🔑 OAuth 2.0 ```txt 1. [Client] -> (Demande d'autorisation) -> [Authorization Server] 2. [Authorization Server] -> (Redirection) -> [Utilisateur] 3. [Utilisateur] -> (Connexion et consentement) -> [Authorization Server] 4. [Authorization Server] -> (Code d'autorisation) -> [Client] 5. [Client] -> (Échange du code) -> [Authorization Server] 6. [Authorization Server] -> (Token d'accĂšs) -> [Client] 7. [Client] -> (RequĂȘte API avec token) -> [Resource Server] 8. [Resource Server] -> (VĂ©rification) -> [AccĂšs autorisĂ©/refusĂ©] ``` ✅ Avantages : SĂ©curisĂ©, standardisĂ© ⚠ Attention : Plus complexe Ă  implĂ©menter --- ## 🔑 API Keys ### RĂŽles - **Client** : Application qui envoie des requĂȘtes - **Serveur API** : VĂ©rifie et autorise les requĂȘtes basĂ©es sur la clĂ© --- ## 🔑 Processus et RĂŽles - API Keys ```txt 1. [Client] -> (RequĂȘte API avec clĂ©) -> [Serveur API] 2. [Serveur API] -> (VĂ©rification de la clĂ©) -> [AccĂšs autorisĂ©/refusĂ©] ``` ✅ **Simple et rapide** / ⚠ **doit ĂȘtre sĂ©curisĂ©e** --- ## Les Promises --- ### then, catch, finally #### ChaĂźnage de Promises #### Gestion des erreurs ### async/await et gestion des erreurs #### Simplification du code avec async/await #### Try/Catch pour une gestion propre des erreurs --- ## Fetch ### Introduction Ă  l’API Fetch ### RequĂȘtes GET et POST avec fetch ### Gestion des erreurs et timeout --- ## Express / TS ### TS ### Express --- ## MongoDB ### Le Not Only SQL ### Ajoute des points ici notamment ---