P.S. Твои видео по Open API очень помогают! Я тебе очень благодарен за твой труд!
@dfkkg3453 Жыл бұрын
Круто, спасибо! А можете подсказать, как в свой лара-проект интегрировать клиент, который был сгенерирован через сваггер-кодген? Второй день мучаюсь, ничего не получается.
@pavelzloi Жыл бұрын
Привет! А какой клиент имеешь ввиду?
@pavelzloi Жыл бұрын
Кстати можешь сразу сюда заходить, это чатик моего канала в телеге t.me/evilfreelancer_chat
@dfkkg3453 Жыл бұрын
@@pavelzloi Ну вот есть стороннее API, есть описание к нему на Сваггере. Я захожу в Swagger Editor, загружаю json-файл с описанием API и нажимаю Generate client -> php. Получаю на выходе архив SwaggerClient-php. В нём уже все методы взаимодействия реализованы. Как его теперь подружить с ларой, чтобы не писать кучу своих методов?
@maxthekeeper4 жыл бұрын
Привет, Павел! Ого! Не ожидал, что удостоюсь хоть какого-то ответа, а тут ещё и отдельное видео! Спасибо огромное, решение мне подсказал мой более опытный коллега. Но насколько я вижу, оно очень похоже на твоё. И да, Киппа - это моя настоящая фамилия 😊
@pavelzloi4 жыл бұрын
Приветствую, Максим! Да просто так получилось, что пока изучал как лучше сделать, чтобы написать ответное письмо получился типа сценарий для видоса. я погуглил и понял, что тему ссылок внутри респонса, да ещё и на базе конкретной php библиотеки, ещё никто не раскрывал, обычно всё ограничено информацией о том, что это в принципе возможно. PS Фамилия прикольная, я если честно подумал, что это рофл или типа того :) PPS Кстати, скоро будет видос про ещё одну прикольную библиотеку ларки, где в ООП стиле автор предлагает описывать OpenAPI, одно из интересных отличий, что можно генерить доку, которая сразу будет читать инфу о структуре модели из базы.
@maxthekeeper4 жыл бұрын
@@pavelzloi отлично! Буду ждать, очень интересно )) Вообще, нужные и крайне специфичные вещи описываешь. По крайней мере, я не находил подобного материала, да ещё и в таком объёме.
@Alex-nm9nr3 жыл бұрын
Благодарю за видео. Действительно, очень помогают. А есть способ указать, какие поля в body обязательные и опциональные?
@pavelzloi3 жыл бұрын
Добрый день, если ничего не путаю для этого нужно в настройках полей использовать параметр под названием required, если значение true то в документации обязательное поле будет отмечено звёздочкой * (то есть астериском).
@alver0633 жыл бұрын
Добрый день. А есть ли видео как в swagger задавать возможные значения полей?
@pavelzloi3 жыл бұрын
Добрый день! Под возможными значениями полей Вы имеете ввиду разные типы данных или enum? Боюсь что ни про то ни про другое видосов не было. Я коснулся свагера в общих чертах, ну а все остальное описано в документации.
@stolentine4 жыл бұрын
а часть полей из модели можно указать в реквесте?
@pavelzloi4 жыл бұрын
Приветствую! В моих проектах я как правило создаю несколько отдельных виртуальных моделей ответа, запроса и требуемых наборов данных (как например в видео), потому так заставить сваггер прятать часть полей из ссылочной модели мне не удалось. Подозреваю, что такого способа в принципе нет, потому как каждый уникальный набор полей отображается отдельно в блоке models ну и плюс в доке об этом не сказано.
@PlayGameToday4 жыл бұрын
Привет, как настроить авторизацию с помощью apiKey на некоторых маршрутах (чтобы глобальный apiKey использовался в запросах, требующих авторизации и автоматически подставлялся в качестве параметра query?)
@pavelzloi4 жыл бұрын
Добрый день! Обычно токены передаются через заголовки, но если необходимо настроить их передачу в квере то из коробки в движке Laravel предусмотрен параметр apiKey. В случае если необходимо включить на некоторых эндпоинтах проверку токена тогда надо использовать мидлвейр auth:api (есть так же способ перечислить исключения через $exceptRoutes в настройках мидлвейра).
@PlayGameToday4 жыл бұрын
@@pavelzloi я уже разобрался, я не использую встроенную аутентификацию ларки. Аутентификация идет в другом слое 3rd-party апи, который вызывается из ларки удаленно. В общем, я уже разобрался. В Controller.php у меня вот такое: * @OA\SecurityScheme( * type="apiKey", * in="query", * name="cookies", * securityScheme="cookieAuth" * ) Дальше контроллеры экстендятся от него. А уже внутри любого контроллера, для метода, который я хочу защитить авторизацией - я пишу директиву: * security={{"cookieAuth": {}}}, и все ок работает ) Но, спасибо за ответ все равно.
@belamov4 жыл бұрын
а у тебя когда-нибудь были проблемы с синхронизацией такой документации и реальных моделей? так кажется, что за всем этим нужно прям внимательно следить (изменил модели - не забудь изменить доку). мб есть какие-нибудь лайфаки для этого?
@pavelzloi4 жыл бұрын
Приветствую, Дмитрий! Да, такие проблемы иногда возникают (точнее даже, возникали), но решаются они в моём случае очень просто, я сначала правлю доку, где описываю желаемый результат, пишу тесты которые проверяют, что запрос и ответ валидны, а уже потом вношу правки в код.
@dydco_mity4 жыл бұрын
А можно на Laravel 7 установить?
@pavelzloi4 жыл бұрын
Добрый день! Благодарю за комментарий, прощу прощения да долгий ответ. Установить конено же можно, вот список релизов github.com/DarkaOnLine/L5-Swagger/tags на 7ке работает любой l5-swagger после 7.0 включительно.