Heim >Backend-Entwicklung >PHP-Tutorial >Dynamische API -Reaktionskontrolle in Laravel -Ressourcen

Dynamische API -Reaktionskontrolle in Laravel -Ressourcen

Emily Anne Brown
Emily Anne BrownOriginal
2025-03-06 01:42:13138Durchsuche

Dynamic API Response Control in Laravel Resources

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
  • : Enthält Attribute nur, wenn sie auf dem Modell whenHas() vorhanden sind
Folgendes ist ein Beispiel für die Verwendung von bedingten Eigenschaften:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn