0% ont trouvé ce document utile (0 vote)
15 vues3 pages

TP2 Api

Ce document présente un travail pratique sur la manipulation des API en Laravel, axé sur la création d'une API pour la gestion des chambres d'un hôtel. Les étapes incluent la création d'un modèle, d'un contrôleur, de routes, et la personnalisation des attributs des modèles ainsi que des ressources API pour structurer les réponses JSON. Des fonctionnalités avancées comme la recherche par type de chambre et l'authentification avec Sanctum sont également suggérées en bonus.

Transféré par

ikram.elfrnani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues3 pages

TP2 Api

Ce document présente un travail pratique sur la manipulation des API en Laravel, axé sur la création d'une API pour la gestion des chambres d'un hôtel. Les étapes incluent la création d'un modèle, d'un contrôleur, de routes, et la personnalisation des attributs des modèles ainsi que des ressources API pour structurer les réponses JSON. Des fonctionnalités avancées comme la recherche par type de chambre et l'authentification avec Sanctum sont également suggérées en bonus.

Transféré par

ikram.elfrnani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Travail Pratique : Manipulation des API en Laravel avec Personnalisation des Attributs

et Création de Ressources API

Objectifs

 Comprendre et manipuler les API RESTful avec Laravel.


 Personnaliser les attributs des modèles.
 Utiliser les ressources API pour structurer les réponses JSON.

Prérequis

 Laravel installé sur votre machine.


 Une base de données configurée.
 Connaissances de base en Laravel et API REST.

Énoncé

Vous devez développer une API pour la gestion des chambres d’un hôtel. L’API doit
permettre les opérations CRUD (Create, Read, Update, Delete) sur les chambres, tout en
personnalisant les attributs du modèle et en structurant les réponses avec des ressources API.

Étapes à suivre

1. Création du Modèle et de la Migration

 Créez un modèle Room avec les attributs suivants :


o id (clé primaire)
o name (nom de la chambre)
o type (type de chambre : simple, double, suite, etc.)
o price (prix de la chambre)
o status (disponible ou occupé)
 Générez une migration et ajoutez ces champs.
 Exécutez la migration pour créer la table correspondante.

2. Création du Contrôleur et des Routes

 Générez un contrôleur RoomController en mode API.


 Implémentez les méthodes suivantes :

use App\Models\Room;
use App\Http\Resources\RoomResource;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class RoomController extends Controller


{
public function index()
{
return RoomResource::collection(Room::paginate(10));
}

public function store(Request $request)


{
$validatedData = $request->validate([
'name' => 'required|string|max:255',
'type' => 'required|string',
'price' => 'required|numeric',
'status' => 'required|string|in:disponible,occupé,maintenance'
]);

$room = Room::create($validatedData);
return new RoomResource($room);
}

public function show($id)


{
$room = Room::findOrFail($id);
return new RoomResource($room);
}

public function update(Request $request, $id)


{
$room = Room::findOrFail($id);
$validatedData = $request->validate([
'name' => 'sometimes|required|string|max:255',
'type' => 'sometimes|required|string',
'price' => 'sometimes|required|numeric',
'status' => 'sometimes|required|string|
in:disponible,occupé,maintenance'
]);

$room->update($validatedData);
return new RoomResource($room);
}

public function destroy($id)


{
$room = Room::findOrFail($id);
$room->delete();
return response()->json(['message' => 'Chambre supprimée avec
succès'], 200);
}
}

 Définissez les routes correspondantes dans routes/[Link] :

Route::apiResource('rooms', RoomController::class);

3. Personnalisation des Attributs du Modèle

 Ajoutez des accessor et mutator dans le modèle Room, par exemple :

public function getFormattedPriceAttribute()


{
return number_format($this->price, 2, ',', ' ') . ' €';
}

public function setNameAttribute($value)


{
$this->attributes['name'] = strtoupper($value);
}
4. Création de la Ressource API

 Générez une ressource API RoomResource.


 Personnalisez la structure de la réponse pour inclure :

public function toArray($request)


{
return [
'id' => $this->id,
'nom' => $this->name,
'type' => $this->type,
'prix' => $this->formatted_price,
'statut' => ucfirst($this->status),
'créé_le' => $this->created_at->format('d-m-Y'),
];
}

 Utilisez la ressource dans le contrôleur pour retourner les réponses JSON structurées.

5. Définition des Routes API

Dans routes/[Link], ajoutez :


Route::apiResource('rooms', RoomController::class);
6. Bonus

 Ajoutez une recherche des chambres par type.

 Implémentez une validation avancée pour store() et update().

 Ajoutez l’authentification avec Sanctum pour sécuriser l’API.

Vous aimerez peut-être aussi