方法提供了增強API響應的強大方法。 它使您可以在發送給客戶端之前修改HTTP響應對象,超越簡單的數據調整,以包含標頭,狀態代碼和其他響應屬性。 withResponse
>
>
這是一個基本示例:
class UserResource extends JsonResource { public function withResponse($request, $response) { $response->header('X-Resource-Type', 'User'); } }
>通過利用
<?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'); } } }
以上是Laravel API中的資源響應自定義的詳細內容。更多資訊請關注PHP中文網其他相關文章!