Генератор Golang OpenAPI переносит параметры запроса в объект, в то время как аналог Java этого не делает

# #java #go #openapi #openapi-generator

Вопрос:

Поэтому я использую OpenAPI для создания классов API на Golang и Java. То, как генераторы соответствующих языков интерпретируют файл yml, похоже, отличается.

Вот часть файла yml:

 parameters:
        - name: collectionName
          schema:
            type: string
        - name: filter_by
          in: query
          schema:
            type: string
          required: true
        - name: batch_size
          in: query 
          required: true
          schema:
            type: integer 
 

И генератор для Golang сгенерировал следующую структуру:

 type DeleteDocumentsParams struct {

    FilterBy string `json:"filter_by"`

    BatchSize int `json:"batch_size"`
}
 

в то время как для Java такой класс не был создан. Однако, если я заключу параметры filter_by и batch_size в такой объект, как этот

   parameters:
    - name: collectionName
      in: path
      description: The name of the collection to delete documents from
      required: true
      schema:
        type: string
    - name: deleteQueryParams
      in: query
      schema:
        type: object
        properties:      
          filter_by:
            type: string
          batch_size:
            type: integer 
 

Класс DeleteQueryParams создается в Java. Но в Golang параметры добавляются во вложенную структуру, подобную этой

 type DeleteDocumentsParams struct {
    DeleteQueryParams *struct {
        BatchSize *int    `json:"batch_size,omitempty"`
        FilterBy  *string `json:"filter_by,omitempty"`
    } `json:"deleteQueryParams,omitempty"`
}
 

Короче говоря, генератор Golang добавляет слой упаковки для параметров запроса, которые я указываю, в то время как генератор Java этого не делает. Возможно ли добиться единообразия в этом случае. Или есть ли какие-либо флаги, которые я могу использовать для включения или отключения переноса параметров объектов?

Комментарии:

1. Так что я уже пробовал использовать openapi-generator раньше. Качество кода было невелико, и его было относительно сложно использовать. Попробовав несколько других вариантов, я обнаружил, что это лучший генератор для спецификаций OpenAPI: go-swagger . Вот несколько ссылок на документацию, относящуюся к вашей проблеме для go-swagger : модели и схемы . go-swagger поддерживает только OpenAPI 2.0, он же Swagger 2.0.