170 похожих чатов

Кто-Нибудь пользовался генерацией моделек из свагера? нашел вот такой пакет, но

он генерит какую-то грязь которую нельзя воткнуть, какие-то невнятные yaml теги ставит
https://github.com/deepmap/oapi-codegen

17 ответов

7 просмотров

https://github.com/go-swagger/go-swagger

Если у вас не интерпрайз, рекомендую посмотреть на этих ребят. Проект молодой но очень быстро развивается и в целом базовые вещи поддерживаются. ПОнравлиось чтобы клиент и сервер сгенерировались спокойно и без гемороя. github.com/ogen-go/ogen

https://github.com/swaggest/swac#go-client

Эта тулзовина генерит: типы и интерфейс сервера, который нужно реализовать, можно сгенерить и клиент. Поэтому там вроде бы всё ок с этим, не понятно, что имеется в виду под грязью. При генерации сервера можно выбрать под что генерить: echo, chi etc. Также они добавили возможность пробрасывать кастомные теги, для какого-нибудь validator, если вам это нужно (т.е. при генерации структурок у них появятся те теги, которые вы хотите) Из очевидных минусов: структуры, которые она генерит, а точнее их поля сортируются по алфавиту и этого не изменить (это явно будет бесить ваших тестеровщиков, если они есть и может быть вас), но тулзовина тут не причем, т.к. внутри нее используют зависимость, которая теряет порядок, используя гошные мапки при парсинге yaml-иков. Но вроде бы issue висят и ждут своего часа.

Denis-D Автор вопроса
Mansur
Эта тулзовина генерит: типы и интерфейс сервера, к...

я пользовался только для генерации типов, не справилась, ничего не маршалится

Denis D
я пользовался только для генерации типов, не справ...

коллега, пользуюсь им в своем проекте, все работает) генерю сервер с типами вот так (складываю в разные файлики): oapi-codegen --package gen --generate chi-server ./api.yml > ./gen/server_gen.go oapi-codegen --package gen --generate types ./api.yml > ./gen/types_gen.go

Denis-D Автор вопроса
Mansur
коллега, пользуюсь им в своем проекте, все работае...

я сейчас обнаружил, что у нас 3.0 опенапи, может это причина

Denis D
я сейчас обнаружил, что у нас 3.0 опенапи, может э...

Все верно, эта тулза для OpenAPI 3 версии

Denis-D Автор вопроса
Mansur
Все верно, эта тулза для OpenAPI 3 версии

тогда вообще нет понимаю почему такую грязь генерит. типы выглядят примерно вот так type Response struct { *Yoba } type Yoba string

Denis D
тогда вообще нет понимаю почему такую грязь генери...

Коллега, если это троллинг, то дайте знать :)

Denis-D Автор вопроса
Mansur
Коллега, если это троллинг, то дайте знать :)

я полагаю из-за этого "allOf": [ { "$ref": "#/components/schemas/Yoba" } ],

Denis D
тогда вообще нет понимаю почему такую грязь генери...

а у вас сама схема изначально корректная? А то я видел такую ересь написанную вручную в OpenAPI/Protobuf , но это работало. Генераторам только такое не нравится и да, они тогда генерят всяку ересь по поданной им ереси

Denis-D Автор вопроса
Viktor Alenkov
а у вас сама схема изначально корректная? А то я в...

скорее всего тут какие-то приколы есть. но рендерится она норм

Denis D
я полагаю из-за этого "allOf": [ ...

это генереная или рукописная схема?

Denis-D Автор вопроса
Viacheslav Poturaev
это генереная или рукописная схема?

если бы я знал откуда она взялась

Denis D
тогда вообще нет понимаю почему такую грязь генери...

хм... похоже они ( oapi-codegen ) для всех типов такую ересь генерят. Взял пример с https://swagger.io/docs/specification/basic-structure/#request-body получил: ``` // PostUsersJSONBody defines parameters for PostUsers. type PostUsersJSONBody struct { Username *string `json:"username,omitempty"` } // PostUsersJSONRequestBody defines body for PostUsers for application/json ContentType. type PostUsersJSONRequestBody PostUsersJSONBody ``` Вопрос - зачем 2 типа? Чисто, чтобы указать, что это именно Request был?

Denis-D Автор вопроса
Viktor Alenkov
хм... похоже они ( oapi-codegen ) для всех типов т...

у меня еще хуже выглдит, вот так type Entity struct { // Details for accepted orders. Yes *struct { // Embedded struct due to allOf(#/components/schemas/Yes) Yes yaml:",inline" } json:"yes"

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
50
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
1
Guy, how to make redirecting to a page like this when http status 401?
Islam Kurbanov
8
Только что в чате Я.Вебмастера потратил я час на пустые споры с каким-то челом. Он с пеной у рта доказывал мне, что любой "самопис" - дерьмо, что у него дыры в безопасности, ...
Андрей [aharito] Харитонов
2
можно эстетический вопрос? у меня есть кучка мелких-мелких функций типа: function AddInteger(aparent:pointer; aname:PWideChar; aval:Int32):pointer; begin result:=AddNode(apa...
Alexey Kulakov
2
why html and css is not standard? i mean why different browser has their own engine and styles and how them work to show result to end user?
Mr Thieves
11
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Карта сайта