OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.33k stars 6.46k forks source link

[BUG] [Go-server] invalid composite literal type string #17373

Open Tomer-L opened 9 months ago

Tomer-L commented 9 months ago

Bug Report Checklist

Description

Generating the following yaml spec you will get code that does not compile with the following errors:

Error 1: invalid composite literal type string

api_test_api.go on line 63

bodyParam := string{}

Expected code ->

bodyParam := ""

Error 2: "github.com/gorilla/mux" imported and not used

Second compilation error is on file api_test_api.go line 17 There are at least 3 open issues:

8847

5153

11097

openapi-generator version

latest stable 7.1.0

OpenAPI declaration file content or url
openapi: 3.1.0
info:
  title: test
  description: API specification
  version: 1.0.0
servers:
  - url: /api/v1
paths:
  /collection/test:
    post:
      summary: POST a test batch
      operationId: postTest
      tags:
        - test api
      requestBody:
        $ref: '#/components/requestBodies/TestBody'
      responses:
        '200':
          $ref: '#/components/responses/SuccessfulOp'

components:
  responses:
    SuccessfulOp:
      description: Successful Operation
      content:
        application/json:
          schema:
            type: bool

  requestBodies:
    TestBody:
      description: Test body
      required: true
      content:
        text/plain:
          schema:
            type: string
            format: byte
Generation Details

I used the following command:

java -jar  generate --additional-properties=packageName=test,sourceFolder=test -i collection_test.yaml -g go-server
Steps to reproduce
  1. copy yaml content into a new file
  2. generate using -i file_name.yaml -g go-server
Related issues/PRs

Could not find issues related to "invalid composite literal type string" error

Suggest a fix
kfircohen123 commented 7 months ago

Encountered this issue as well...

wing328 commented 5 months ago

tested with the spec again and looks like the issue has been resolved

please give it a try with the latest master

friendly reminder: OpenAPI 3.1 support is still beta

merterpam commented 4 months ago

Is this issue really resolved?

We face the same problem and I tried to test it with the latest master, but I still have the following line generated:

bodyParam := string{}

and the Invalid composite literal type error.

From what I see, this comes from controller-api.mustache on line 594

{{paramName}}Param := {{dataType}}{}

I don't really know how Mustache works, but I think there needs to be a special handling of literal types for body parameters?

wing328 commented 4 months ago

what about using {{#isPrimitveType}} ... {{/isPrimitiveType}} check ?