Rumah > pembangunan bahagian belakang > tutorial php > Kawalan tindak balas API dinamik dalam sumber Laravel

Kawalan tindak balas API dinamik dalam sumber Laravel

Emily Anne Brown
Lepaskan: 2025-03-06 01:42:13
asal
137 orang telah melayarinya

Dynamic API Response Control in Laravel Resources

Sumber API Laravel menyediakan cara yang elegan untuk memasukkan sifat -sifat dalam respons, yang membolehkan anda membuat API yang fleksibel dan cekap untuk memenuhi konteks dan keizinan yang berbeza.

Apabila membina API, anda sering perlu menyesuaikan respons anda berdasarkan senario yang berbeza -contohnya, hanya memaparkan medan tertentu kepada pentadbir, hanya termasuk data yang relevan apabila diminta, atau menyesuaikan format tindak balas berdasarkan titik akhir. Sumber API Laravel menyediakan cara yang kuat untuk mengendalikan situasi ini melalui sifat bersyarat.

beberapa kaedah utama yang tersedia ialah:

  • : atribut hanya dimasukkan jika keadaan itu benar when()
  • : Mengandungi hubungan hanya jika ia telah dimuatkan whenLoaded()
  • : atribut hanya disertakan jika atribut tidak batal whenNotNull()
  • : mengandungi atribut hanya jika mereka wujud pada model
  • whenHas()
  • Berikut adalah contoh menggunakan sifat bersyarat:

mari kita meneroka contoh praktikal API katalog dengan data bersyarat:
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),
        ];
    }
}
Salin selepas log masuk

Ciri-ciri bersyarat dalam sumber API Laravel membolehkan anda membina respons yang menyedari konteks sambil mengekalkan kod anda mudah dan mudah dikekalkan.
<?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()
            ),
        ];
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Kawalan tindak balas API dinamik dalam sumber Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan