我已经从Swagger API生成了一个Spring REST Web服务。 POST服务的代码如下所示
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringCodegen", date = "2016-10-24T09:36:32.738Z")
@Api(value = "addUser", description = "the addUser API")
public interface AddUserApi {
@ApiOperation(value = "Add an additional user", notes = "This service is used to add and additional user to the list of users.", response = Void.class, tags={ })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "OK", response = Void.class),
@ApiResponse(code = 200, message = "Unexpected error", response = Void.class) })
@RequestMapping(value = "/addUser",
produces = { "application/json" },
consumes = { "application/x-www-form-urlencoded" },
method = RequestMethod.POST)
ResponseEntity<Void> addUserPost(
@ApiParam(value = "Unique id of the user to be added.", required=true ) @RequestPart(value="userId", required=true) Integer userId,
@ApiParam(value = "Name of the user to be added.", required=true ) @RequestPart(value="name", required=true) String name,
@ApiParam(value = "Profession of the user to be added.", required=true ) @RequestPart(value="profession", required=true) String profession);
}
我使用内容类型“application / x-www-form-urlencoded”将数据发布到此服务。但是我面临的问题是,在发布时我收到了一个错误JSON作为响应,如下所示。
{
"timestamp": 1477401894250,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.web.multipart.MultipartException",
"message": "The current request is not a multipart request",
"path": "/UserManagement/rest/UserService/addUser"
}
根据我的知识,只有当我们从表单上传文件时才需要multipart,我不上传文件。我搜索过,每个结果都基于文件上传。我的招摇YAML如下。
swagger: '2.0'
info:
version: 1.0.0
title: Extended User Management API
description: >-
This is communicate with an extended user management webservice to test the swagger API for learning
schemes:
- http
basePath: /UserManagement/rest/UserService
host: '127.0.0.1:8089'
produces:
- application/json
paths:
/users:
get:
responses:
'200':
description: An array of users
schema:
type: array
items:
$ref: '#/definitions/User'
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
/addUser:
post:
summary: Add an additional user
description: This service is used to add and additional user to the list of users.
produces:
- application/json
consumes:
- application/x-www-form-urlencoded
parameters:
- name: user_id
in: query
description: Unique id of the user to be added.
required: true
type: integer
format: int32
- name: name
in: query
description: Name of the user to be added.
required: true
type: string
- name: profession
in: query
description: Profession of the user to be added.
required: true
type: string
responses:
'200':
description: OK
default:
description: Unexpected error
schema:
$ref: '#/definitions/Error'
definitions:
User:
type: object
properties:
user_id:
type: integer
format: int32
description: This is unique id that is assigned to each user.
name:
type: string
description: This is the name of the user
profession:
type: string
description: This is the profession that the user holds
Error:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
有人请求帮助我并告诉我为什么我要面对这个问题以及如何解决这个问题。如果您需要任何其他详细信息来分析问题,请告知。
请求标题如下
{
"Accept": "application/json"
}
编辑:
我尝试将消耗更改为“application / json”,我得到了如下所示的响应
{
"timestamp": 1477464487595,
"status": 415,
"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 'application/x-www-form-urlencoded' not supported",
"path": "/UserManagement/rest/UserService/addUser"
}
请求标题在下面给出
{
"Accept": "application/json"
}
答案 0 :(得分:1)
您的映射包含 consumemes = {“application / x-www-form-urlencoded”} 表示它接受二进制的内容类型,将其更改为以下接受json数据类型
@RequestMapping(value = "/addUser",
produces = { "application/json" },
consumes = { "application/json" },
method = RequestMethod.POST)
ResponseEntity<Void> addUserPost(..)