Vous êtes sur la page 1sur 25

API-REST

Sommaire

Introduction au REST API


Les méthodes HTTP
API Rest avec Laravel
Améliorer l ’API
Introduction au REST API

API (Application Programming Interface) ou « Interface de


Programmation d'Applications » en français, est un ensemble de
définitions et de protocoles qui permettent à des applications de
communiquer et de s'échanger mutuellement des données ou des
services.

REST (Representational State Transfert) est un style d'architecture


logicielle définissant un ensemble de contraintes à utiliser pour créer un
service web.

JSON (JavaScript Object Notation) est un format standard qui permet de


représenter des données structurées de façon semblable aux objets
JavaScript.

On parle d'API REST ou REST API lorsqu'une API respecte les contraintes


architecturales de REST.
Les méthodes HTTP
Les méthodes de ressources correspondent aux différents types de
traitements que nous pouvons effectuer lors d’une requête API REST. Il
existe principalement 4 méthodes courantes, qui correspondent aux
méthodes CRUD, à savoir :

POST : la méthode qui sert à publier, envoyer des informations au


serveur GET : celle pour récupérer des informations venant du serveur.
Elle peut retourner plusieurs formats de réponses, comme nous l’avons
souvent répété au cours de cette chronique ;
PUT : il s’agit de la méthode à utiliser lorsque l’on effectue une mise à
jour auprès d’un serveur ;
DELETE : qui, comme son nom l’indique permet de supprimer une entrée
sur un serveur.
API REST AVEC LARAVEL
Prérequis pour l'API
Utilisons la table existante « users » dont le schéma est
décrit dans la méthode up() de la migration
/databases/migrations/..._create_users_table.php :
Le contrôleur de l'API

Pour générer le contrôleur de l'API, appelons-le « UserController »,


exécutons la commande artisan suivante :

Les options :
• api permet de retirer les méthodes create et edit du contrôleur
puisqu'elles ne sont pas utiles pour une API. Il va nous rester index ,
store , show , update et destroy .

• model=User permet d'importer et d'injecter le modèle


/app/Models/User.php aux méthodes  show , update et destroy du
contrôleur.
A ce niveau, nous avons le code suivant au fichier
app/Http/Controllers/API/UserController.php généré :
Les routes de l'API

Pour définir les routes « users.* » (users.index, users.show,


users.store, ...) de l'API, appelons la méthode Route::apiRessource()
au fichier /routes/api.php :

Pour afficher les routes générées, on exécute la commande artisan


suivante dans la console :
Voici les routes que nous avons :

Les méthodes du contrôleur de l'API


Revenons sur les actions de routes ou méthodes du
contrôleur /app/Http/Controllers/API/UserController.php :

1. L' action index

La méthode index() de la route nommée « users.index » permet


d'afficher une liste de la source:

La ressource dont nous parlons ici est /app/Models/User.php.


On récupère tous les utilisateurs  $users puis on retourne les
informations en réponse JSON :
2. L' action store

La méthode store(Request $request) de la route nommée «


users.store » permet d'enregistrer une nouvelle ressource :
On valide les données de la requête, ensuite on insère un
nouvel utilisateur dans la table « users » puis on retourne une
réponse JSON avec les informations du $user nouvellement
créé et le code « 201 Created » :
3. L' action show

La méthode show(User $user) de la route nommée «


users.show » permet d'afficher une source spécifiée :

On récupère un utilisateur $user de la base de données puis on


retourne ses informations en réponse JSON :
4. L' action update
La méthode update(User $user) de la route nommée «
users.update » permet de mettre à jour une ressource spécifiée

On valide les données de la requête, ensuite on modifie les


informations de l'utilisateur $user puis on retourne une réponse
JSON :
5. L' action destroy

La méthode destroy(User $user) de la route nommée «


users.destroy » permet de supprimer une ressource spécifiée :
On récupère un utilisateur $user à partir de son identifiant, ensuite
on le supprime puis on retourne une réponse JSON :
Améliorer l'API
1. Modifier la réponse 404

En cas de réponse « 404 Not Found », la page 404 par défaut


de Laravel est retournée ; chose qui n'est pas pratique pour
une API. Modifions ce comportement en retournant une
réponse JSON à la place de cette page 404 par défaut.
2. Utiliser une requête de formulaire

Pour valider la requête aux actions store(Request $request) et update(Request


$request, User $user) , nous pouvons utiliser une seule requête de formulaire «
UserStoreRequest » que nous pouvons générer en exécutant la commande
artisan suivante :
Ramenons la validation au fichier
/app/Http/Requests/UserStoreRequest.php généré :
Cette requête de formulaire peut être utilisée de la manière suivante
:

3. Utiliser une ressource d'API

Nous pouvons utiliser une ressource d'API pour transformer


facilement un modèle ou une collection de modèles en réponse
JSON. Retouchons les méthodes show() et index() en intégrant une
ressource d'API.
L' action show

Pour la méthode show(User $user) , nous pouvons générer une


ressource en exécutant la commande artisan suivante :

Cela crée le fichier app/Http/Resources/UserResource.php où


nous pouvons définir les attributs à retourner pour le modèle
User à travers la méthode toArray($request) :
Nous pouvons ensuite retourner une réponse JSON au
contrôleur app/Http/Controllers/API/UserController.php de la
manière suivante :
L' action index

Pour la méthode index() , nous pouvons retourner une


collection de ressources en JSON en appelant la méthode
UserResource::collection($data) :
Merci pour votre attention !

Questions ?
Sources

Vous aimerez peut-être aussi