swagger-api/swagger-codegen

[GOLANG] Bug. Client codegen Post Body

Open

#5,442 opened on Apr 20, 2017

View on GitHub
 (4 comments) (1 reaction) (0 assignees)HTML (12,701 stars) (5,474 forks)batch import
Client: GoIssue: Bughelp wanted

Description

Description

The issue here revolves around golang client generated code and having an untyped json expected in the body. The codegen will set the varLocalPostBody = &body, and body interface{}, so internally we will pass around the memory address of body instead of its contents. This causes client error: Unsupported 'Body' type/value when I attempt to pass a struct into the POST endpoint defined.

Swagger-codegen version

2.2.0. I'm calling via this jimschubert container

Swagger declaration file content or url
post:
      description: submitting a new JSON
      operationId: postJSON
      parameters:
        - in: body
          name: body
          description: JSON
          required: true
          schema:
            type: object
      responses:
        200:
          description: received Raw JSON
Command line used for generation

where the v1.yaml is my swagger spec

clientconfig.json is

{
  "packageName": "apiclient",
  "packageVersion": "1.0"
}
docker run -it -v $(pwd):/swag \
	          jimschubert/swagger-codegen-cli generate \
	          -i /swag/v1.yaml \
	          -l go \
	          -o /swag/out/api/client \
	          -c /swag/clientconfig.json
Steps to reproduce
  1. Specify a POST endpoint that takes untyped JSON
  2. Codegen
  3. Call the default_api.go function for that post. It should take interface{}
  4. See the client error: Unsupported 'Body' type/value

*I've also see the &body code if I specify a type integer

Related issues
Suggest a Fix

Pass around the actual contents of the interface {}

s/&body/body

Contributor guide