API რესურსები

არ დააბრუნოთ raw Eloquent დატა API response-ში. ყოველთვის გამოიყენეთ API რესურსები.

API რესურსი არის transformation layer თქვენს Eloquent models-სა და JSON response-ს შორის.

წარმოიდგინეთ, რომ თქვენი database არის სამზარეულო, სადაც ნედლი პროდუქტებია (raw data). API Resource არის მზარეული, რომელიც ამ პროდუქტებს ამზადებს და ლამაზად წარმოადგენს სტუმრებისთვის.

Laravel-ში (და API-ებში ზოგადად), raw models/arrays-ის დაბრუნება მუშაობს, მაგრამ API Resources-ის გამოყენება ითვლება საუკეთესო პრაქტიკად რამდენიმე მიზეზის გამო.

1. თქვენ აკონტროლებთ რა გადის თქვენი სისტემიდან

Raw Eloquent მოდელი ყველაფერს შეიცავს, რისგანაც იგი შედგება.

return User::find(1);

ეს შეიძლება შეიცავდეს :

  • internal ID-ებს

  • foreign key-ებს

  • pivot data

  • timestamps

  • მომავალში დამატებული column-ებს

Resource-ით:

class UserResource extends JsonResource {
    public function toArray($request) {
        return [
            'id'   => $this->id,
            'name' => $this->name,
        ];
    }
}

✅ მხოლოდ წინასწარ განსაზღვრული დატა ❌ Database სტრუქტურა ≠ API contract

2. გამოყოფს API-ს database-ისგან

თქვენი ბაზის სქემა შეიცვლება. თქვენი API არ უნდა გაფუჭდეს ამის გამო.

თუ დააბრუნებთ raw model-ს, column-ის დამატება გაუთვალისწინებლად შეცვლის რისფონსს.

API რესურსი მოქმედებს როგორც სტაბილური API layer.

3. Conditional fields & relationships

რესურსები გაძლევთ საშუალებას დააბრუნოთ მონაცემები მხოლოდ საჭიროების შემთხვევაში.

ეს შეუძლებელია (ან ძალიან ცუდია/არაპრაქტიკულია) raw models-ით.

4. უცვლელი response სტრუქტურა

Resources გაძლევთ:

  • პროგნოზირებად JSON structure-ს

  • ცვლადის უცვლელ სახელებს

  • ცენტრალიზებულ formatting-ს

მაგალითად: თარიღები, enum-ები, გამოთვლილი ველები, fallback მნიშვნელობები.

როდესაც model-ს აბრუნებთ, თქვენ აბრუნებთ ყველაფერს, რაც იმ მომენტში ჩატვირთულია. ეს ნიშნავს, რომ database სტრუქტურა, internal ველები და მომავალში დამატებული ქოლუმნები შეიძლება "გაიპაროს" response-ში. ერთმა დამატებულმა column-მა ან relationship-მა შეიძლება ჩუმად შეცვალოს თქვენი API output.

Resource-ის შექმნა

ეს შექმნის ფაილს: app/Http/Resources/UserResource.php

როგორ გამოიყურება რესურსის კლასი:

მაგალითი

შეჯამება ერთ წინადადებაში

API რესურსი არის კონტრაქტი თქვენს database-სა და გარე სამყაროს შორის — უსაფრთხო, სტაბილური და კონტროლირებადი.

მეტი ინფო ნახეთ ლარაველის დოკუმენტაციაში.

Last updated