Как создавать API CRUD с Laravel 8. Часть 1

olxxx

НОВИЧОК

olxxx

НОВИЧОК
Status
Offline
Регистрация
18 Сен 2021
Сообщения
1
Реакции
0
Всем привет! Мы продолжим со второй части этого руководства, чтобы смонтировать API с Laravel 8. Во второй части мы увидим, как создать первую часть CRUD, в которой мы будем отвечать за создание маршрутов для доступа к нашему API. , контроллер для управления нашими действиями, и мы добавим первое действие, которое позволит загружать фотографии наших собак с использованием токена аутентификации, как мы узнали в предыдущем руководстве.

Модели
В этом случае мы собираемся создать модель под названием Post, которая будет сохранять информацию о фотографиях наших собак, заголовке и описании. Для этого запускаем следующую команду:

php artisan make: модель Post -m
Добавляя параметр -m, мы указываем, что в дополнение к модели мы хотим создать файл миграции для базы данных.

После создания модели мы переходим в папку database / migrations и внутри у нас должен быть новый файл, который в качестве префикса будет иметь текущую дату (дату создания миграции) плюс _create_posts_table.php. Этот файл будет содержать информацию для создания таблицы сообщений в нашей базе данных. Итак, чтобы добавить нужные столбцы, мы открываем его и заменяем содержимое метода up следующим:

публичная функция вверх ()
{
Schema :: create ('сообщения', function (Blueprint $ table) {
$ table-> id ();
$ table-> foreignId ('user_id') -> constrained ();
$ table-> строка ('заголовок');
$ table-> строка ('изображение');
$ table-> mediumText ('описание');
$ table-> отметки времени ();
});
}
Как я уже упоминал ранее, мы добавляем поля для сохранения заголовка, изображения и описания. Мы также создаем связь с таблицей пользователей, чтобы узнать, какому пользователю принадлежит публикация. Метод id () создаст поле для первичного ключа, а метод timestamps () сгенерирует два поля для хранения даты создания и даты последнего обновления.

Теперь мы должны открыть файл app / Models / Post.php и внутри класса мы добавим следующий код таким образом, чтобы файл выглядел так:

<? php

пространство имен App \ Models;

используйте Illuminate \ Database \ Eloquent \ Factories \ HasFactory;
используйте Illuminate \ Database \ Eloquent \ Model;

класс Post расширяет модель
{
используйте HasFactory;

/ **
* Получите запись пользователя, связанную с сообщением.
* /
пользователь публичной функции ()
{
return $ this-> belongsTo (User :: class);
}
}
С помощью пользовательского метода мы можем связать пользователя с публикацией, и мы можем получить доступ к данным пользователя, когда мы просматриваем наши сообщения.

Наконец, мы запускаем следующую команду для создания таблицы в базе данных:

php artisan migrate
CRUD
Теперь, когда у нас есть модель, пора приступить к работе с CRUD, поэтому первое, что мы собираемся сделать, это создать контроллер с помощью следующей команды:

php artisan make: контроллер Api / V1 / PostController --api --model = Post
Как и контроллер аутентификации, PostController будет храниться в папке V1 для разделения будущих версий API. Параметр --api автоматически создаст методы CRUD, а --model = Post сообщит вам, что этот контроллер будет работать с данными модели Post.

Теперь, когда у нас есть контроллер, мы собираемся сгенерировать маршруты, поэтому переходим в файл routes / api.php и добавляем следующую строку:

Route :: apiResource ('v1 / posts', App \ Http \ Controllers \ Api \ V1 \ PostController :: class) -> промежуточное ПО ('api');
С помощью этой простой строки мы создадим все маршруты, с помощью которых мы сможем получить доступ к пяти методам PostController, которые смогут выполнять следующие действия:

Покажите список всех фотографий.

Показать конкретную по id.

Создайте их.

Обновите их

Устраните их.


Следующим шагом, который мы собираемся выполнить, будет добавление функциональности, позволяющей создавать сообщения. Для этого мы открываем файл app / Http / Controllers / Api / V1 / PostController.php и импортируем классы PostRequest и Auth, помимо добавления следующего кода в метод хранилища и создания метода обновления, который мы будем использовать для сохранения изображений.

<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;
use App\Http\Requests\V1\PostRequest;
use Illuminate\Support\Facades\Auth;

class PostController extends Controller
{
...
/**
* Store a newly created resource in storage.
*
* Param App\Http\Requests\V1\PostRequest $request
* @return \Illuminate\Http\Response
*/
public function store(PostRequest $request)
{
$request->validated();

$user = Auth::user();

$post = new Post();
$post->user()->associate($user);
$url_image = $this->upload($request->file('image'));
$post->image = $url_image;
$post->title = $request->input('title');
$post->description = $request->input('description');

$res = $post->save();

if ($res) {
return response()->json(['message' => 'Post create succesfully'], 201);
}
return response()->json(['message' => 'Error to create post'], 500);
}

private function upload($image)
{
$path_info = pathinfo($image->getClientOriginalName());
$post_path = 'images/post';

$rename = uniqid() . '.' . $path_info['extension'];
$image->move(public_path() . "/$post_path", $rename);
return "$post_path/$rename";
}

Как только это будет сделано, мы собираемся объяснить, что делает метод store.

Первое, что мы делаем, это проверяем данные, которые отправляет нам пользователь, для этого мы запускаем метод validated () объекта $ request, и это проверяет, соблюдаются ли правила, которые мы создали в классе PostRequest.

Следующим шагом будет получение пользователя и создание объекта типа post для сохранения информации. Мы связываем пользователя с сообщением и используем метод загрузки для сохранения изображения в общей папке Laravel, и оно возвращает его URL-адрес, таким образом мы можем сохранить его путь в базе данных и просмотреть его позже.

Мы также добавляем заголовок и описание и используем метод save объекта $ post для сохранения изменений. Если все прошло хорошо, он вернет true, и мы отправим пользователю сообщение о том, что все прошло хорошо, если нет, мы сообщим пользователю, что у нас произошла ошибка, и нам придется проверить ?‍♂️.

Теперь, когда он собран, пришло время его протестировать. Как и в предыдущем уроке, я буду использовать Postman, но вы можете использовать тот инструмент, который вам больше всего нравится.

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

Как только это будет сделано, мы запустим запрос по следующему URL-адресу http: // localhost: 8000 / api / v1 / posts. Этот запрос должен относиться к типу сообщения, и в нем мы должны отправить параметры заголовка, изображения и описания. Мы также должны отправить следующие заголовки, чтобы он работал правильно:
 
Сверху