OpenAPI Generator - Генерация кода по спецификации

  Рет қаралды 18,529

IT как Конструктор

IT как Конструктор

Күн бұрын

Создаем код по OpenAPI / Swagger спецификации с помощью OpenAPI Generator (аналог Swagger Codegen) и исправляем базовые ошибки после автогенерации. В примере используется java + spring boot.
00:00 Введение
00:53 Установка OpenAPI Generator
01:27 Генерация кода
03:29 Исправляем ошибки
07:56 Результат
Готовая спецификация:
GitHub Link: clck.ru/sT7kq
Google Disc Link: clck.ru/sT7nk
#openapi #swagger #openapi-generator #generator #tutorial #examples #java #kotlin #spring #REST #API

Пікірлер: 28
@user-wf6rm8zh5l
@user-wf6rm8zh5l 2 ай бұрын
Очень понятные объяснения. Спасибо огромное.
@IT_like_bricks_building
@IT_like_bricks_building 2 ай бұрын
Пожалуйста!
@sovrinfo
@sovrinfo Жыл бұрын
Спасибо за видео. Коммент в поддержку!
@DubinArtur
@DubinArtur 5 ай бұрын
Классно, не знаю, как отблагодарить, так что подписался
@IT_like_bricks_building
@IT_like_bricks_building 5 ай бұрын
Супер, что было полезно)
@BurzGor
@BurzGor 11 ай бұрын
Генерировал сейчас версией 6.6.0. Ошибок таких уже нет, все исправлено.
@IT_like_bricks_building
@IT_like_bricks_building 11 ай бұрын
Отличная новость. Спасибо! Попробую снова)
@404Negative
@404Negative 4 ай бұрын
то что за больше чем 10 лет разработки, только сейчас у них начало получатся компилировать исходники для одного ресурса с одной сущностью без ошибок - это очень подозрительно. я хотел переходить на сваггер, но сейчас передумал. если такие траблы грубо говоря с хеллоу ворлд программой, то какая же масса ошибок будет в малом проекте. я уже молчу про проекты средних масштабов...
@soldieroffortune3561
@soldieroffortune3561 28 күн бұрын
Cпасибо Вам огромное! Очень познавательно. Могу я попросить Вас об одолжении написать пошагово, что было сделано? В ролике не удалось уловить.Заранее спасибо!
@IT_like_bricks_building
@IT_like_bricks_building 27 күн бұрын
Здравствуйте, на мой взгляд, лучше посоветую вам посмотреть моё последнее видео на эту тему kzfaq.info/get/bejne/equUiaqW2seYaWw.html . Там уже учтены изменения, внесённые за год, большая часть дефектов в библиотеке, о которых тут была речь в видео, поправлена. Плюс там есть ссылка на гитхаб. Надеюсь, это поможет вам.
@user-ds6to1cm2b
@user-ds6to1cm2b Жыл бұрын
Добрый день. Не совсем понимаю как устроен механизм интерактивного тестирования. Что необходимо, чтобы можно было нажать Try it out, создать объект, изменить его, удалить? И возможно ли это сделать, если нету доступа к исходникам сервера? То есть имея информацию только об API и сущностях без информации о бизнес логики (сервисного и репозиторонго слоя)
@IT_like_bricks_building
@IT_like_bricks_building Жыл бұрын
Добрый день! Предположим, что с одной стороны у нас есть openapi спецификация, а с другой сервис, который ей соответствует, он доступен по http, а вот доступа к исходникам нет. Тогда мы можем либо у себя локально (Swagger Editor, Swagger UI, Insomnia) открыть спецификацию и пользоваться "Try it out", кнопка будет доступна. Либо ещё вариант Insomnia умеет сгенерировать коллекцию Http запросов, которая соответствует спецификации. Ключевое, что сервис точно соответствует этой спецификации, а иметь доступ в код совсем необязательно. PS. У меня в ближайших планах сделать видео про dredd, как раз один из способов тестирования на соответствие сервиса спецификации.
@user-ds6to1cm2b
@user-ds6to1cm2b Жыл бұрын
@@IT_like_bricks_building Благодарю за ответ!
@maksimus.ssirotkin1124
@maksimus.ssirotkin1124 Жыл бұрын
Добрый день, подскажите пожалуйста как добавить собственную аннотацию над полем сгенерированного класса или просто аннотацию?
@IT_like_bricks_building
@IT_like_bricks_building Жыл бұрын
Можно посмотреть на x-class-extra-annotation. Ссылки для примера stackoverflow.com/a/71526062/14750092 и github.com/OpenAPITools/openapi-generator/issues/324
@maksimus.ssirotkin1124
@maksimus.ssirotkin1124 Жыл бұрын
@@IT_like_bricks_building Спасибо, попробую и так
@maksimus.ssirotkin1124
@maksimus.ssirotkin1124 Жыл бұрын
@@IT_like_bricks_building добрый день а где это все в доках находить, не получается хорошо читать доки(
@IT_like_bricks_building
@IT_like_bricks_building Жыл бұрын
Честно говоря в данном случае не подскажу, так как этот атрибут был добавлен кем-то самостоятельно через merge request, соответственно в официальную документацию openapi мог не попасть. Хотя в документе про openapi generator есть его упоминание openapi-generator.tech/docs/generators/spring/
@nikitazhigalov913
@nikitazhigalov913 4 ай бұрын
Swagger Editor позволяет держать конфиденциальную информацию о своем проекте в открытом доступе? Как публиковать свою спецификацию? Надо ли быть зарегистрированным? Может это платно вести свои спецификации для своей компании..?
@IT_like_bricks_building
@IT_like_bricks_building 4 ай бұрын
Если вы говорите именно про работу с Swagger Editor, то я не подскажу, я им не пользуюсь. Только для кратких демонстраций. Расскажу про наш опыт. Есть много редакторов openapi схем, внутри продуктов jetbrains, insomnia и тд. Соответственно это становится частью кодовой базы компании, выкладывает в гит. Публикация схемы = 1. ссылка на поднятый swagger-ui конкретного модуля с openapi схемой (url:port/swagger-ui/index.html). 2. ссылка в гит на спецификацию. 3. просто файл переслать со спецификацией. Мы создаем спецификации внутри intellij idea, для целей внешних интеграций даем ссылку на swagger-ui (п1 выше).
@armenuhikocharyan9650
@armenuhikocharyan9650 Жыл бұрын
Please leave here also the link of the video what are you talking about at 1:48. Thaks in advance.
@IT_like_bricks_building
@IT_like_bricks_building Жыл бұрын
Hello, this one: kzfaq.info/get/bejne/nraqotWg0JPLeWg.html
@404Negative
@404Negative 4 ай бұрын
судя по этому видосу OpenAPI - мусор, и проще самому писать код для rest сервера. жаль, ведь идея не плохая генерировать код для этих целей автоматически.
@IT_like_bricks_building
@IT_like_bricks_building 4 ай бұрын
Чуть ранее кто-то из подписчиков писал, что эти дефекты уже пофиксили. Так что должно быть норм. Лично мы в проекте без допиливания прекрасно нынче используем. Последнее видео по генерации кода у меня на канале как раз про наш текущий (+/-) подход.
@404Negative
@404Negative 4 ай бұрын
@@IT_like_bricks_building прежде всего кстате спасибо за видосы, а то я набросился как-то внезапно. ну а вообще когда компилируешь шаблон, то компилятор должен либо давать ошибку и не компилировать, либо компилировать в полном соответствии с шаблоном. представь, компилируешь js через babel и всё проходит без ошибок, но потом оказываеться что функция helloWorld() была просто тупо выпилена из кода. это ж просто нонсенс.
@IT_like_bricks_building
@IT_like_bricks_building 4 ай бұрын
Плюсую)) мы сейчас сделали хитро, мы на ci/cd сделали таск по валидации openapi схемы, чтобы как раз не вышло описанной ситуации. В целом отлавливали пару раз косяки
@ivsergey5150
@ivsergey5150 10 ай бұрын
по выводу массива обектов. у меня нет возможности править сгенерированный код и проставлять там @ArraySchema, возможно ли добится такого же поведение через описание спецификации?
@IT_like_bricks_building
@IT_like_bricks_building 9 ай бұрын
Простите, запоздал с ответом, можно сделать. В последних версиях генератора кусок спецификации ниже корректно работает. content: application/json: schema: type: array items: $ref: "#/components/schemas/Toy"
NERF WAR HEAVY: Drone Battle!
00:30
MacDannyGun
Рет қаралды 52 МЛН
когда повзрослела // EVA mash
00:40
EVA mash
Рет қаралды 4,2 МЛН
100❤️
00:19
MY💝No War🤝
Рет қаралды 8 МЛН
REST API - Как сделать хорошо
13:42
IT как Конструктор
Рет қаралды 14 М.
Кратко про OpenAPI и Swagger
26:43
IT как Конструктор
Рет қаралды 46 М.
OpenAPI и Swagger Editor - своё описание REST API с нуля
16:35
IT как Конструктор
Рет қаралды 77 М.
How to build an OpenAPI Specification using YAML?
15:31
CodeWithPraveen
Рет қаралды 37 М.
NERF WAR HEAVY: Drone Battle!
00:30
MacDannyGun
Рет қаралды 52 МЛН