он генерит какую-то грязь которую нельзя воткнуть, какие-то невнятные yaml теги ставит
https://github.com/deepmap/oapi-codegen
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 висят и ждут своего часа.
я пользовался только для генерации типов, не справилась, ничего не маршалится
коллега, пользуюсь им в своем проекте, все работает) генерю сервер с типами вот так (складываю в разные файлики): 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
я сейчас обнаружил, что у нас 3.0 опенапи, может это причина
Все верно, эта тулза для OpenAPI 3 версии
тогда вообще нет понимаю почему такую грязь генерит. типы выглядят примерно вот так type Response struct { *Yoba } type Yoba string
Коллега, если это троллинг, то дайте знать :)
я полагаю из-за этого "allOf": [ { "$ref": "#/components/schemas/Yoba" } ],
а у вас сама схема изначально корректная? А то я видел такую ересь написанную вручную в OpenAPI/Protobuf , но это работало. Генераторам только такое не нравится и да, они тогда генерят всяку ересь по поданной им ереси
скорее всего тут какие-то приколы есть. но рендерится она норм
это генереная или рукописная схема?
если бы я знал откуда она взялась
хм... похоже они ( 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 был?
у меня еще хуже выглдит, вот так type Entity struct { // Details for accepted orders. Yes *struct { // Embedded struct due to allOf(#/components/schemas/Yes) Yes yaml:",inline" } json:"yes"
Обсуждают сегодня