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' | ||