Автор оригинала: 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/”