java - Spring Rest Web 服务返回 415

标签 java spring swagger

我有以下 Spring Web 服务。 swagger 的 JSON

{
"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"
],
"consumes": [
    "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.",
            "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"
            }
        }
    }
}
}

我生成了代码并解决了项目中的所有错误。我让应用程序在 Spring boot main 中运行,没有任何问题。我现在面临的问题是,在访问获取网络服务“/users”时,我从该服务中收到错误。 Error produced

我尝试调试 spring 应用程序,发现预期的服务甚至没有命中。服务代码如下。 @javax.annotation.Generate(value = "class io.swagger.codegen.languages.SpringCodegen", date = "2016-10-24T09:36:32.738Z")

@Api(value = "users", description = "the users API")
public interface UsersApi {

@ApiOperation(value = "", notes = "", response = User.class, responseContainer = "List", tags={  })
@ApiResponses(value = { 
    @ApiResponse(code = 200, message = "An array of users", response = User.class),
    @ApiResponse(code = 200, message = "Unexpected error", response = User.class) })
@RequestMapping(value = "/users",
    produces = { "application/json" }, 
    consumes = { "application/json" },
    method = RequestMethod.GET)
ResponseEntity<List<User>> usersGet();

}

该接口(interface)的实现如下

@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringCodegen", date = "2016-10-24T09:36:32.738Z")
@Controller
public class UsersApiController implements UsersApi {

UserDao udao = new UserDao();

public ResponseEntity<List<User>> usersGet() {
    return new ResponseEntity<List<User>>(udao.getAllUsers(), HttpStatus.OK);
}
}

请有人告诉我我犯了什么错误,以便我解决这个问题。

最佳答案

嗯,正如异常(exception)情况所示,您正在使用不受支持的媒体类型。 查看您的 @RequestMapping 注释:

@RequestMapping(value = "/users",
produces = { "application/json" }, 
consumes = { "application/json" },
method = RequestMethod.GET)
ResponseEntity<List<User>> usersGet(); 

要么删除消耗 key ,要么支持 GET 请求中的 Content-Type。

编辑:也许删除消耗 key 是一个更好的选择。我认为在 GET 请求中使用任何 json 不是一个好主意。

关于java - Spring Rest Web 服务返回 415,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239653/

相关文章:

java - 如何在 logback 自动加载 logback.xml 之前定义 logback 变量/属性?

java - API设计/命令模式与 "normal implementation"

java - Camel 每小时消耗不超过 1 条消息?

mysql - JPA 的时区异常,但此参数已添加

Swagger/Swashbuckle 授权。默认检查范围

java - 用Java画圆

spring - 非默认端口上的Docker-compose,spring app + mongoDB

java - Spring AOP 何时使用 CGLIB 代理?

asp.net-core - 外部文档包中的模型显示在庞大的文档中

java - 如何使用 Swagger 在 java 中使用 ApiModelProperty