Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
front:requetes_api [2025/09/25 14:32] – paolo | front:requetes_api [2025/09/29 16:45] (Version actuelle) – [Effectuer une requête] paolo | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
Documentation [Axios](https:// | Documentation [Axios](https:// | ||
- | Pour effectuer des requêtes serveur directement depuis le navigateur, **JavaScript** met à disposition l'API **Fetch**. Celle-ci permet d' | + | Pour effectuer des requêtes serveur directement depuis le navigateur, **JavaScript** met à disposition l'**API Fetch**. Celle-ci permet d' |
- | Ici, nous nous concentrons uniquement sur l'API Fetch mais il existe également des libs comme **Axios** qui ajoute une couche d' | + | Ici, nous nous concentrons uniquement sur l'**API Fetch** mais il existe également des libs comme **Axios** qui ajoute une couche d' |
+ | ### Préparer une requête | ||
+ | Nous avons une application routée avec des pages **Login** et **Home**. Et si on essayait de préparer une requête de connexion ? | ||
+ | |||
+ | En ce qui concerne le **Router API**, veuillez vous référer à la documentation **Back**, et pour le traitement des requêtes d' | ||
+ | |||
+ | ``` | ||
+ | const request = { | ||
+ | method: " | ||
+ | body: loginData, | ||
+ | headers: { | ||
+ | Accept: " | ||
+ | " | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | fetch(`${API_URL}/ | ||
+ | .then(response => response.json()) | ||
+ | .then(json => console.log(json.data)) | ||
+ | .catch(error => console.error(error)); | ||
+ | ``` | ||
+ | Pour savoir comment récupérer la variable d' | ||
+ | . | ||
### Effectuer une requête | ### Effectuer une requête | ||
+ | Il y a deux moyens d' | ||
+ | |||
+ | * Au sein d'un '' | ||
+ | |||
+ | ``` | ||
+ | useEffect(() => { | ||
+ | // request | ||
+ | }, []); | ||
+ | ``` | ||
+ | |||
+ | * Lors d'un événement **React** ('' | ||
+ | |||
+ | ``` | ||
+ | <button onClick={() => { | ||
+ | // request | ||
+ | }}> | ||
+ | Do an action | ||
+ | </ | ||
+ | ``` | ||
+ | |||
+ | Dans notre cas, la requête doit s' | ||
+ | |||
+ | Documentation [FormData](https:// | ||
+ | |||
+ | ``` | ||
+ | // src/ | ||
+ | |||
+ | import { Input } from " | ||
+ | import { API_URL } from " | ||
+ | |||
+ | export const Login = () => { | ||
+ | const handleFormOnSubmit = (e) => { | ||
+ | e.preventDefault() // empêche le comportement par défaut du formulaire | ||
+ | | ||
+ | const data = new FormData(e.target) | ||
+ | const loginData = Object.fromEntries(data.entries()); | ||
+ | | ||
+ | // request | ||
+ | }; | ||
+ | | ||
+ | return ( | ||
+ | <div className=" | ||
+ | <form | ||
+ | onSubmit={handleFormOnSubmit} | ||
+ | className=" | ||
+ | > | ||
+ | <Input | ||
+ | id=" | ||
+ | name=" | ||
+ | label=" | ||
+ | type=" | ||
+ | placeholder=" | ||
+ | /> | ||
+ | <Input | ||
+ | id=" | ||
+ | name=" | ||
+ | label=" | ||
+ | type=" | ||
+ | placeholder=" | ||
+ | /> | ||
+ | <button className=" | ||
+ | Connexion | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ); | ||
+ | }; | ||
+ | ``` | ||
+ | Nous savons désormais comment fonctionnent les requêtes API. Il s' |