Дисциплины - Серверные технологии разработки

Разработка бэкенда backend API - Ресурсы на практике - Коллекции ресурсов

Помимо создания ресурсов, преобразующих отдельные модели, имеется возможность создавать ресурсы, отвечающие за преобразование коллекций моделей. Это позволяет ответам JSON включать ссылки и другую метаинформацию, имеющую отношение ко всей коллекции конкретного ресурса.

Чтобы сгенерировать новую коллекцию ресурса, нужно использовать флаг --collection при создании ресурса, или включить слово Collection в имя ресурса при его создании. Это укажет Laravel, что он должен создать коллекцию ресурса. Коллекции ресурса расширяют класс Illuminate\Http\Resources\Json\ResourceCollection:

php artisan make:resource User --collection

php artisan make:resource UserCollection

После создания класса коллекции ресурса, можно легко определить любые метаданные, которые должны быть включены в ответ:

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class UserCollection extends ResourceCollection
{
    /**
     * Преобразовать коллекцию ресурса в массив.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
            'links' => [
                'self' => 'link-value',
            ],
        ];
    }
}

После определения коллекции ресурса, ее можно вернуть из маршрута или контроллера:

use App\Http\Resources\UserCollection;
use App\Models\User;

Route::get('/users', function () {
    return new UserCollection(User::all());
});

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
80422 БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР
Вопросы