Рубрики
Uncategorized

Используйте возможности ресурсов API laravel для создания своего API

Автор оригинала: David Wong.

Статья направлена профессиональному сообществу разработчиков laravel. Оригинальная ссылка: https://learnku.com/laravel/t

В последние два года я использовал fractal для разработки API.

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

Не поймите меня неправильно, фрактал работает хорошо, но я всегда надеюсь развиваться только с помощью фреймворка. Я не использую библиотеки классов так часто, как могу! Мне не нравится использовать сторонние библиотеки для усложнения разработки.

В прошлом году мне нравилось использовать некоторые интерфейсные фреймворки, такие как Vue и react для разработки. Поэтому я решил использовать только laravel для создания интерфейса API. Когда мне нужно установить интерфейс API, фрактал-моя предпочтительная библиотека классов. Теперь все изменилось.

В laravel 5.5 у нас есть ресурсы API, которые меня очень волнуют.

Два часа назад laravel 5.5 был выпущен, когда я пил кофе с друзьями. Когда я прочитал этот твит полчаса назад, первой моей мыслью было использовать ресурсы API для публикации моего первого поста в блоге, что я и сделал.

Ресурсы API Laravel основаны на фрактале, поэтому я не потратил много времени на изучение того, как им пользоваться. Итак, давайте начнем это понимать

Создайте приложение laravel

Создание приложения laravel из общей командной строки

composer create-project laravel/laravel Laravel55Api

После создания приложения/|. env.пример Переименовать в .env И сгенерируйте ключ laravel с помощью следующей команды.

php artisan key:generate

Служба запуска

php artisan serve

Хорошо. Что дальше?

Создайте ресурс продукта

Ресурсы API-это новые функции в laravel, которые преобразуют вашу модель и ее коллекцию в JSON. Далее давайте создадим ресурс продукта.

php artisan make:resource Product

Ты можешь быть там. приложение/Http/Ресурсы Посмотрите ресурс продукта, который вы только что создали в каталоге

Конечно, нам также нужна миграция базы данных продукта, модель и контроллер. Мы можем быстро создать их с помощью этой команды.

php artisan make:model Product -mc

Откройте файл переноса базы данных и измените его следующим образом вверх Содержимое метода:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->integer('price');
        $table->timestamps();
    });
}

Обратите внимание, что поле цены здесь является целым числом. Я прошу вас, никогда не используйте плавающую точку для хранения ваших ценовых данных!

Обязательно храните с целым числом!

Теперь подключитесь к базе данных с помощью приложения laravel и запустите миграцию для создания таблицы данных.

Эта статья не является обучающим постом laravel один на один, поэтому я не буду тратить слишком много времени на подключение к базе данных.

Следующий?

На данный момент у нас есть модели, контроллеры, миграции баз данных и классы ресурсов для преобразования моделей и коллекций моделей в JSON. Так что же дальше?

До этого, что такое классы ресурсов? Мы ресурсы Какой класс продукта создан в папке? Класс ресурсов представляет структуру одной модели, преобразованной в JSON.

В сочетании с вышесказанным, давайте откроем product.php файл класса ресурсов.

Вот метод toArray, который возвращает массив свойств, который необходимо преобразовать в JSON при отправке ответа.

Давайте изменим его, чтобы у нас были лучшие идеи.

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'price' => $this->price,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}

Теперь, когда мы можем получить идентификатор, имя, цену, created_at и updated_at Ответы для этих полей.

Если мы удалим его из поля метода toArray цена , которое не будет найдено в возвращаемом JSON цене 。 Это круто, не так ли?

Используйте Ресурсы Продукта

Мы только что изменили его на метод , давайте продолжим использовать его в нашем контроллере продукте Ресурсы.

продукт Контроллер выглядит так:

Для трансформации продукт , мы просто продукт A продукт

Давайте создадим шоу Метод, смотрите результаты.

открыть api.php Файл для создания маршрута за пределами промежуточного программного обеспечения.

Route::get('/products/{id}', '[email protected]');

Теперь вручную в ваших продуктах Добавить новый в список продукт , затем посетите http://127.0.0.1:8000/api/pro… Чтобы увидеть простой продукт

Вы должны получить этот результат:

Теперь давайте немного изменим наши ресурсы, если вы не хотите делать свой продукт Из цены Все, что вам нужно сделать, это просто следовать вашему методу toArray . Как только вы из toArray Метод удален цена Вы должны получить этот результат, не включая цену :

И это все?

Конечно, нет! потому что метод toArray – это всего лишь метод, что означает, что вы можете включить дополнительную информацию.

Если мы хотим включить “тестовое” сообщение, просто измените свой метод toArray .

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'test' => 'This is just a test',
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}

Это и есть результат:

Однако важно отметить, что тип данных, которые вы хотите вернуть, всегда правильный. Взгляните на первый снимок экрана цена , который возвращает целое число , но через (int) $ это->цена , мы все равно должны заставить его быть целым числом .

Теперь посмотрите create_at и updated_at Метку времени. Что делать, если вы хотите вернуть строку с фактической меткой времени? Затем вы можете привести тип к строке, как в этом примере:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'test' => 'This is just a test',
        'created_at' => (string)$this->created_at,
        'updated_at' => (string)$this->updated_at,
    ];
}

Теперь результат таков:

Заключительные замечания

Это всего лишь небольшой пример использования ресурсов API laravel.

Если я продолжу писать, эта статья никогда не будет закончена.

Так вот о чем эта статья. Как вы знаете, у нас есть еще темы для обсуждения, такие как подкачка, сбор ресурсов, объединение и пакет данных.

Оригинал: “https://developpaper.com/use-laravels-api-resource-capabilities-to-build-your-api/”