Heim >Backend-Entwicklung >PHP-Tutorial >Dynamische API -Reaktionskontrolle in Laravel -Ressourcen
Laravel -API -Ressourcen bieten eine elegante Möglichkeit, Bedingungseigenschaften in Antworten einzubeziehen, sodass Sie flexible und effiziente APIs für unterschiedliche Kontexte und Berechtigungen erstellen können.
beim Erstellen von APIs müssen Sie Ihre Antworten häufig anhand verschiedener Szenarien anpassen - beispielsweise nur bestimmte Felder an Administratoren anzeigen, nur relevante Daten enthalten, wenn sie angefordert werden, oder das Antwortformat basierend auf Endpunkten anpassen. Die API -Ressourcen von Laravel bieten eine leistungsstarke Möglichkeit, diese Situationen durch bedingte Eigenschaften zu bewältigen.
Einige wichtige Methoden sind:
when()
: Das Attribut ist nur eingeschlossen, wenn die Bedingung wahr ist whenLoaded()
: Enthält nur die Beziehung, wenn sie geladen wurde whenNotNull()
: Das Attribut ist nur eingeschlossen, wenn das Attribut nicht null ist
whenHas()
vorhanden sind
use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; class UserResource extends JsonResource { public function toArray(Request $request): array { return [ 'id' => $this->id, 'name' => $this->name, 'email' => $this->when($request->user()->isAdmin(), $this->email), ]; } }Lassen Sie uns ein praktisches Beispiel einer Katalog -API mit bedingten Daten untersuchen:
<?php namespace App\Http\Resources; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; class ProductResource extends JsonResource { public function toArray(Request $request): array { return [ 'id' => $this->id, 'name' => $this->name, 'slug' => $this->slug, 'price' => $this->price, // 仅在详细视图中包含完整描述 'description' => $this->when( $request->route()->named('products.show'), $this->description, $this->excerpt ), // 为已认证的用户包含库存信息 'stock_level' => $this->when( $request->user()?->can('view-inventory'), $this->stock_count ), // 加载时包含关系 'category' => new CategoryResource($this->whenLoaded('category')), // 有条件地包含计数 'reviews_count' => $this->when( $request->include_counts, $this->reviews_count ), // 包含管理员数据 'profit_margin' => $this->when( $request->user()?->isAdmin(), fn() => $this->calculateProfitMargin() ), ]; } }Die bedingten Eigenschaften in der Laravel-API-Ressource ermöglichen es Ihnen, kontextbezogene Antworten zu erstellen und gleichzeitig Ihren Code einfach und leicht zu warten.
Das obige ist der detaillierte Inhalt vonDynamische API -Reaktionskontrolle in Laravel -Ressourcen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!