Как сделать REST API на Symfony в PHP. Полный гайд для разработчиков backend

preview_player
Показать описание

В этом видео мы построим учебное приложение реализующее REST API. Для этого мы научимся отдавать данные в JSON. Разберемся с тем как работает компонет Symfony/Serializer. Также обработаем запрос POST с телом запроса в формате JSON. Сначала сделаем это с помощью обычной Symfony/Form формы. Далее попробуем это сделать через специальный Dto объект. Также полученные контроллеры покроем функциональными Unit тестами.

*Все видео курса в плейлисте:*

REST API - это интерфейс программирования приложений (API), который использует принципы архитектуры REST (Representational State Transfer) для обмена данными между клиентом и сервером посредством стандартных HTTP-запросов, таких как GET, POST, PUT, DELETE. Он позволяет клиентам получать, отправлять, изменять и удалять данные на удаленном сервере.

REST API обычно строится вокруг ресурсов (например, пользователей, продуктов, заказов), каждый из которых имеет уникальный идентификатор (URI). Данные передаются в формате JSON или XML, обеспечивая гибкость и универсальность.

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

00:00 Что будем делать и что такое REST API
03:00 Разбираемся с программой Postman
05:30 Делаем первый REST API запрос к серверу на Symfony 6 PHP
06:30 Делаем первый метод контроллера который возвращает JsonResponse
08:00 Использование переменных среды в Postman
13:00 Работа аттрибута [Ignore] для скрытия полей сущности в JSON ответе сервера
23:00 Добавление групп валидации для разной конвертации данных в json
30:00 Делаем добавление блога через JSON запрос и стандартную форму Symfony
35:00 Логин в систему через JSON запрос используя стандартную авторизацию Symfony
38:00 Краткий обзор LexikJWTAuthenticationBundle для перевода авторизации на JWT
40:00 Использование HTTP метода DELETE для удаления данных. Удаляем блог по REST API запросу
45:00 Использование возможностей Symfony 6 для маппинга query string в объект. Аттрибут [MapQueryString]
46:30 Переделываем фильтр блогов BlogFilter с помощью [MapQueryString]
47:00 Как экспортировать коллецию Postman в JSON файл
55:00 Использование DTO для создания сущности блога
56:00 Использование возможностей PHP 8.2 для объявления public свойств DTO readonly
01:02:00 Зачем нужен свой Resolver в [MapRequestPayload] и как приблизительно его сделать
01:04:00 Покрываем новый контроллер функциональными Unit тестами
01:08:00 Использование в Unit тестами loginUser для выполнения запросов от авторизованного пользователя
01:11:00 Добавление дополнительных asserts с помощью пакета phpunit-json-assert
01:15:00 Пишем тесты на метод удаления и находим баг с потерянной миграцией таблицы comments. Исправляем пропущенную миграцию.
01:16:00 Еще раз прогововариваем, что сделали сегодня

#php #symfony #restapi #json #обучение #программирование #обучающие
Рекомендации по теме
Комментарии
Автор

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

bukachuk_php
Автор

Пожалуй более полезного видео по Symfony я для себя не встречал. Куча полезной информации.

Tavda
Автор

Благодарю. Видео очень кстати. 🤲🏼много много благ вам.

SaidaSherDaily
Автор

Видео очень интересное кстати. Сделано с душой и с высоты большого опыта!

groza-a-a
Автор

Класс, мне как раз очень нужно было, спасибо вам и крепкого здоровья 🫡🫡🫡

denysbarzynskyi
Автор

Круто, пока смотрю этот плейлист, новое видео появилось, оказывается. Спасибо 😊

locbkm
Автор

Ваши видео это каждый раз положительные эмоции, и охота учить. Спасибо.

disconnect
Автор

Спасибо за плейлист, бегло посмотрел пару видео и кажется это то что надо чтобы с Symfony разобраться. Впитываю как губка все что в видео, после Laravel нужно быстро на Symfony перестроиться)

Круто было бы ссылку на репозиторий прикрепить) С состоянием проекта как видео начинается
Вот мне например сейчас конкретно API в Symfony нужно и есть выходные чтобы разобраться. Я взял бы репозиторий, включил бы видео и все руками за автором повторил, осмысляя все что вещается. А сейчас просто внимательно смотрю

wsg
Автор

Я вас помню в одном из учебных платформ вы были моим куратором)

mirosh
Автор

А можно залить код, который в видео, на гитхаб?

NataliPanfilenka
Автор

Как трудно это все запоминать и не запутаться что кому передаётся.

disconnect
Автор

24:18 Кажется, что указание атрибутов наподобие `#[Groups(['groupOne'])]` над свойствами ведет к "засорению" класса сущности? Может быть есть способ этого избежать?

niknt
Автор

Как лучше создать api просто на symfony ? Или например использовать симфоневский api platform ?

-xc
Автор

Интересно посмотреть рабочую схему работы авторизации через JWT в таком же формате. Ибо очень много усложнений или хитрых обучалок, которые сильнее путают чем помогают. А авторизация все-таки важная часть приложения, хорошо бы понимать как она устроена и вытекающая из этого схема ролей(RBAC) Чаще всего на этом проект и начинает "пахнуть", имхо.

groza-a-a
Автор

Postman вроде стал платным.
Кто што посоветует теперь? :)

kholodnov
Автор

JSON это далеко не "ключ - значение")

princessluna
Автор

Слабо, очень слабо. Не рекомендую брать это в качестве примера. Заголовок видео должен быть другой. Полный гайд для уровней джуна.
Взаимодействие с ДТО не раскрыто. Сервисы пишутся слабенькие. работа тяп ляп. В контроллере вся бизнес логика. Пересказ документации? Лучше бы показал, как нужно делать в современном мире. Зачем твиг в этом курсе? Для тех, кто использует старые версии😅😂
Рассказал бы лучше про нормальное грамотное построение архитектуры. Использование ДДД. Программирование от интерфейсов с применением разных паттернов. Такой твоей ерунды в ютубе навалом. на что ставка? Снова новички. Синьор решил сделать то, что другими уже пережевано, никакой изюминки. Треш кринж крч.

vikont