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...

КОМЕНТАРІ • 21

  • @maxthekeeper
    @maxthekeeper 4 роки тому +1

    Привет, Павел!
    Ого! Не ожидал, что удостоюсь хоть какого-то ответа, а тут ещё и отдельное видео!
    Спасибо огромное, решение мне подсказал мой более опытный коллега. Но насколько я вижу, оно очень похоже на твоё.
    И да, Киппа - это моя настоящая фамилия 😊

    • @pavelzloi
      @pavelzloi  4 роки тому +1

      Приветствую, Максим! Да просто так получилось, что пока изучал как лучше сделать, чтобы написать ответное письмо получился типа сценарий для видоса. я погуглил и понял, что тему ссылок внутри респонса, да ещё и на базе конкретной php библиотеки, ещё никто не раскрывал, обычно всё ограничено информацией о том, что это в принципе возможно.
      PS Фамилия прикольная, я если честно подумал, что это рофл или типа того :)
      PPS Кстати, скоро будет видос про ещё одну прикольную библиотеку ларки, где в ООП стиле автор предлагает описывать OpenAPI, одно из интересных отличий, что можно генерить доку, которая сразу будет читать инфу о структуре модели из базы.

    • @maxthekeeper
      @maxthekeeper 4 роки тому

      @@pavelzloi отлично! Буду ждать, очень интересно ))
      Вообще, нужные и крайне специфичные вещи описываешь. По крайней мере, я не находил подобного материала, да ещё и в таком объёме.

  • @PlayGameToday
    @PlayGameToday 4 роки тому +1

    P.S. Твои видео по Open API очень помогают! Я тебе очень благодарен за твой труд!

  • @belamov
    @belamov 4 роки тому +1

    а у тебя когда-нибудь были проблемы с синхронизацией такой документации и реальных моделей? так кажется, что за всем этим нужно прям внимательно следить (изменил модели - не забудь изменить доку). мб есть какие-нибудь лайфаки для этого?

    • @pavelzloi
      @pavelzloi  4 роки тому +1

      Приветствую, Дмитрий! Да, такие проблемы иногда возникают (точнее даже, возникали), но решаются они в моём случае очень просто, я сначала правлю доку, где описываю желаемый результат, пишу тесты которые проверяют, что запрос и ответ валидны, а уже потом вношу правки в код.

  • @stolentine
    @stolentine 4 роки тому +2

    а часть полей из модели можно указать в реквесте?

    • @pavelzloi
      @pavelzloi  4 роки тому

      Приветствую! В моих проектах я как правило создаю несколько отдельных виртуальных моделей ответа, запроса и требуемых наборов данных (как например в видео), потому так заставить сваггер прятать часть полей из ссылочной модели мне не удалось. Подозреваю, что такого способа в принципе нет, потому как каждый уникальный набор полей отображается отдельно в блоке models ну и плюс в доке об этом не сказано.

  • @PlayGameToday
    @PlayGameToday 4 роки тому +1

    Привет, как настроить авторизацию с помощью apiKey на некоторых маршрутах (чтобы глобальный apiKey использовался в запросах, требующих авторизации и автоматически подставлялся в качестве параметра query?)

    • @pavelzloi
      @pavelzloi  4 роки тому +1

      Добрый день! Обычно токены передаются через заголовки, но если необходимо настроить их передачу в квере то из коробки в движке Laravel предусмотрен параметр apiKey.
      В случае если необходимо включить на некоторых эндпоинтах проверку токена тогда надо использовать мидлвейр auth:api (есть так же способ перечислить исключения через $exceptRoutes в настройках мидлвейра).

    • @PlayGameToday
      @PlayGameToday 4 роки тому

      ​@@pavelzloi я уже разобрался, я не использую встроенную аутентификацию ларки.
      Аутентификация идет в другом слое 3rd-party апи, который вызывается из ларки удаленно.
      В общем, я уже разобрался.
      В Controller.php у меня вот такое:
      * @OA\SecurityScheme(
      * type="apiKey",
      * in="query",
      * name="cookies",
      * securityScheme="cookieAuth"
      * )
      Дальше контроллеры экстендятся от него.
      А уже внутри любого контроллера, для метода, который я хочу защитить авторизацией - я пишу директиву:
      * security={{"cookieAuth": {}}},
      и все ок работает )
      Но, спасибо за ответ все равно.

  • @dfkkg3453
    @dfkkg3453 Рік тому

    Круто, спасибо! А можете подсказать, как в свой лара-проект интегрировать клиент, который был сгенерирован через сваггер-кодген? Второй день мучаюсь, ничего не получается.

    • @pavelzloi
      @pavelzloi  Рік тому

      Привет! А какой клиент имеешь ввиду?

    • @pavelzloi
      @pavelzloi  Рік тому

      Кстати можешь сразу сюда заходить, это чатик моего канала в телеге t.me/evilfreelancer_chat

    • @dfkkg3453
      @dfkkg3453 Рік тому

      @@pavelzloi Ну вот есть стороннее API, есть описание к нему на Сваггере. Я захожу в Swagger Editor, загружаю json-файл с описанием API и нажимаю Generate client -> php. Получаю на выходе архив SwaggerClient-php. В нём уже все методы взаимодействия реализованы. Как его теперь подружить с ларой, чтобы не писать кучу своих методов?

  • @Alex-nm9nr
    @Alex-nm9nr 3 роки тому

    Благодарю за видео. Действительно, очень помогают. А есть способ указать, какие поля в body обязательные и опциональные?

    • @pavelzloi
      @pavelzloi  3 роки тому

      Добрый день, если ничего не путаю для этого нужно в настройках полей использовать параметр под названием required, если значение true то в документации обязательное поле будет отмечено звёздочкой * (то есть астериском).

  • @alver063
    @alver063 3 роки тому

    Добрый день. А есть ли видео как в swagger задавать возможные значения полей?

    • @pavelzloi
      @pavelzloi  3 роки тому

      Добрый день! Под возможными значениями полей Вы имеете ввиду разные типы данных или enum? Боюсь что ни про то ни про другое видосов не было. Я коснулся свагера в общих чертах, ну а все остальное описано в документации.

  • @dima_lebid
    @dima_lebid 4 роки тому

    А можно на Laravel 7 установить?

    • @pavelzloi
      @pavelzloi  3 роки тому

      Добрый день! Благодарю за комментарий, прощу прощения да долгий ответ. Установить конено же можно, вот список релизов github.com/DarkaOnLine/L5-Swagger/tags на 7ке работает любой l5-swagger после 7.0 включительно.