swagger-api/swagger-codegen

[JAVA] Generated api client doesn't work for plain text body types

Open

#8,288 opened on 2018年6月6日

GitHub で見る
 (9 comments) (2 reactions) (1 assignee)HTML (5,474 forks)batch import
help wanted

Repository metrics

Stars
 (12,701 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

Description

The generated API Client for Java does not work properly for plain string body types. The error message is: io.swagger.client.ApiException: Content type "text/plain" is not supported at io.swagger.client.ApiClient.serialize(ApiClient.java:749) at io.swagger.client.ApiClient.buildRequest(ApiClient.java:994) at io.swagger.client.ApiClient.buildCall(ApiClient.java:945) at io.swagger.client.api.DefaultApi.addTodoCall(DefaultApi.java:103)

Swagger-codegen version

2.4.0

Swagger declaration file content or url
  /todo:
    post:
      summary: Add new ToDo
      description: ''
      operationId: addTodo
      consumes:
        - text/plain
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: false
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Task'
Command line used for generation

java -jar .\modules\swagger-codegen-cli\target\swagger-codegen-cli.jar generate -i ..../swagger.json -l java -o outputpath

Suggest a fix/enhancement

add new else if in ApiClient.java in method public RequestBody serialize(Object obj, String contentType) throws ApiException:

 } else if (obj instanceof String) {
            return RequestBody.create(MediaType.parse(contentType), (String) obj);

コントリビューターガイド