La méthode withResponse
de Laravel fournit un moyen puissant d'améliorer vos réponses API. Il vous permet de modifier l'objet de réponse HTTP avant qu'il ne soit envoyé au client, allant au-delà des ajustements de données simples pour englober les en-têtes, les codes d'état et d'autres attributs de réponse.
Ceci est particulièrement utile pour construire des API robustes qui doivent transmettre des métadonnées, des détails de versioning ou des en-têtes personnalisés aux clients.
Voici un exemple de base:
class UserResource extends JsonResource { public function withResponse($request, $response) { $response->header('X-Resource-Type', 'User'); } }
Cet exemple démontre une personnalisation de la réponse API plus complète:
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Request; class DocumentResource extends JsonResource { public function toArray(Request $request): array { return [ 'id' => $this->id, 'title' => $this->title, 'content' => $this->when( $request->user()->canViewContent($this->resource), $this->content ), 'created_at' => $this->created_at, 'updated_at' => $this->updated_at ]; } public function withResponse(Request $request, $response) { $response->header('X-Document-ID', $this->id); if ($this->is_public) { $response->header('Cache-Control', 'public, max-age=3600'); $response->header('ETag', md5($this->updated_at)); } if ($this->wasRecentlyCreated) { $response->setStatusCode(201); } if ($request->has('include_legacy')) { $response->header('X-Deprecated-Fields', 'legacy_format,old_structure'); $response->header('X-Deprecation-Date', '2024-07-01'); } } }
En tirant parti de la méthode withResponse
, vos ressources API évoluent à partir de simples détenteurs de données dans des réponses HTTP entièrement personnalisables, enrichissant votre API avec des métadonnées essentielles aux côtés des données de base.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!