Laravel Swagger/OpenAPI - Ответ на вопрос от зрителя
Вставка
- Опубліковано 22 сер 2024
- Отвечают на запрос одного из зрителей по поводу продвинутой работы с OpenAPI о котором я рассказывал в одном из прошлых видео.
Оригинальное видео про Laravel и Swagger/OpenAPI
• Laravel и Swagger/OpenAPI
Ссылка на репозиторий проекта с исходниками:
github.com/Evi...
Дата типы
swagger.io/doc...
Полезные ссылки:
- Телега: t.me/evilfreel...
- Основной канал: / @pavelzloi
- Live-канал: / @e-freelancerlivechann...
- Twitch: / evilfreelancer
- Twitter: / evilfreelancer
- GitHub: github.com/Evi...
Ссылки на Steam:
- Группа Steam: steamcommunity...
- Рекомендации куратора: store.steampow...
Сделать пожертвование:
- www.donational...
- streamlabs.com...
- ko-fi.com/efre...
Привет, Павел!
Ого! Не ожидал, что удостоюсь хоть какого-то ответа, а тут ещё и отдельное видео!
Спасибо огромное, решение мне подсказал мой более опытный коллега. Но насколько я вижу, оно очень похоже на твоё.
И да, Киппа - это моя настоящая фамилия 😊
Приветствую, Максим! Да просто так получилось, что пока изучал как лучше сделать, чтобы написать ответное письмо получился типа сценарий для видоса. я погуглил и понял, что тему ссылок внутри респонса, да ещё и на базе конкретной php библиотеки, ещё никто не раскрывал, обычно всё ограничено информацией о том, что это в принципе возможно.
PS Фамилия прикольная, я если честно подумал, что это рофл или типа того :)
PPS Кстати, скоро будет видос про ещё одну прикольную библиотеку ларки, где в ООП стиле автор предлагает описывать OpenAPI, одно из интересных отличий, что можно генерить доку, которая сразу будет читать инфу о структуре модели из базы.
@@pavelzloi отлично! Буду ждать, очень интересно ))
Вообще, нужные и крайне специфичные вещи описываешь. По крайней мере, я не находил подобного материала, да ещё и в таком объёме.
P.S. Твои видео по Open API очень помогают! Я тебе очень благодарен за твой труд!
а у тебя когда-нибудь были проблемы с синхронизацией такой документации и реальных моделей? так кажется, что за всем этим нужно прям внимательно следить (изменил модели - не забудь изменить доку). мб есть какие-нибудь лайфаки для этого?
Приветствую, Дмитрий! Да, такие проблемы иногда возникают (точнее даже, возникали), но решаются они в моём случае очень просто, я сначала правлю доку, где описываю желаемый результат, пишу тесты которые проверяют, что запрос и ответ валидны, а уже потом вношу правки в код.
а часть полей из модели можно указать в реквесте?
Приветствую! В моих проектах я как правило создаю несколько отдельных виртуальных моделей ответа, запроса и требуемых наборов данных (как например в видео), потому так заставить сваггер прятать часть полей из ссылочной модели мне не удалось. Подозреваю, что такого способа в принципе нет, потому как каждый уникальный набор полей отображается отдельно в блоке models ну и плюс в доке об этом не сказано.
Привет, как настроить авторизацию с помощью apiKey на некоторых маршрутах (чтобы глобальный apiKey использовался в запросах, требующих авторизации и автоматически подставлялся в качестве параметра query?)
Добрый день! Обычно токены передаются через заголовки, но если необходимо настроить их передачу в квере то из коробки в движке Laravel предусмотрен параметр apiKey.
В случае если необходимо включить на некоторых эндпоинтах проверку токена тогда надо использовать мидлвейр auth:api (есть так же способ перечислить исключения через $exceptRoutes в настройках мидлвейра).
@@pavelzloi я уже разобрался, я не использую встроенную аутентификацию ларки.
Аутентификация идет в другом слое 3rd-party апи, который вызывается из ларки удаленно.
В общем, я уже разобрался.
В Controller.php у меня вот такое:
* @OA\SecurityScheme(
* type="apiKey",
* in="query",
* name="cookies",
* securityScheme="cookieAuth"
* )
Дальше контроллеры экстендятся от него.
А уже внутри любого контроллера, для метода, который я хочу защитить авторизацией - я пишу директиву:
* security={{"cookieAuth": {}}},
и все ок работает )
Но, спасибо за ответ все равно.
Круто, спасибо! А можете подсказать, как в свой лара-проект интегрировать клиент, который был сгенерирован через сваггер-кодген? Второй день мучаюсь, ничего не получается.
Привет! А какой клиент имеешь ввиду?
Кстати можешь сразу сюда заходить, это чатик моего канала в телеге t.me/evilfreelancer_chat
@@pavelzloi Ну вот есть стороннее API, есть описание к нему на Сваггере. Я захожу в Swagger Editor, загружаю json-файл с описанием API и нажимаю Generate client -> php. Получаю на выходе архив SwaggerClient-php. В нём уже все методы взаимодействия реализованы. Как его теперь подружить с ларой, чтобы не писать кучу своих методов?
Благодарю за видео. Действительно, очень помогают. А есть способ указать, какие поля в body обязательные и опциональные?
Добрый день, если ничего не путаю для этого нужно в настройках полей использовать параметр под названием required, если значение true то в документации обязательное поле будет отмечено звёздочкой * (то есть астериском).
Добрый день. А есть ли видео как в swagger задавать возможные значения полей?
Добрый день! Под возможными значениями полей Вы имеете ввиду разные типы данных или enum? Боюсь что ни про то ни про другое видосов не было. Я коснулся свагера в общих чертах, ну а все остальное описано в документации.
А можно на Laravel 7 установить?
Добрый день! Благодарю за комментарий, прощу прощения да долгий ответ. Установить конено же можно, вот список релизов github.com/DarkaOnLine/L5-Swagger/tags на 7ке работает любой l5-swagger после 7.0 включительно.