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

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

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

17 ответов

25 просмотров

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"

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта