swagger-api/swagger-codegen

[GOLANG] Bug. Client codegen Post Body

Open

#5,442 建立於 2017年4月20日

在 GitHub 查看
 (4 留言) (1 反應) (0 負責人)HTML (12,701 star) (5,474 fork)batch import
Client: GoIssue: Bughelp wanted

描述

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

貢獻者指南