【问题标题】:Java MongoDB POST : 415 unsupported mediatypeJava MongoDB POST:415 不支持的媒体类型
【发布时间】:2017-03-06 05:24:00
【问题描述】:

我正在构建我的第一个 API。 GET 请求有效,但我遇到错误 415 Unsupported mediatype 的 POST 请求。经过一番搜索和重写代码,它仍然失败。有人知道为什么吗?参数值为:

-String userName 
-String password
-String phone
-String email
-List roles

代码: 用户资源:

@RolesAllowed("OWNER")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void create(@PathParam( "userName" ) String userName,@PathParam( "password" ) String password,@PathParam( "phone" ) String phone,@PathParam( "email" ) String email,@PathParam( "roles" ) List<String> roles)
{
User user = new User();
user.setName(userName);
user.setPassword(password);
user.setPhone(phone);
user.setEmail(email);
user.setRoles(roles);
userService.createUser(user);
}

用户服务:

public void createUser(User user){
userDAO.create(user);
}

用户DAO:

public void create( User user )
{
    save( user );
}

POST 请求:

localhost:8080/User/?userName=Daniel&password=test&phone=0634554567&email=daniel@email.com&roles=["OWNER"]

【问题讨论】:

    标签: java mongodb api http http-status-code-415


    【解决方案1】:

    你有两个问题:

    1. 省略@Consumes(MediaType.APPLICATION_JSON)。您的请求与 json 无关。
    2. @PathParams 应替换为 @RequestParams。这些值被读取为请求参数(查询字符串)而不是路径部分。

    另外,在请求示例中,您应该去掉User 之后的额外/

    localhost:8080/User?userName=Daniel&amp;...

    为了使用路径参数,你应该在资源方法配置中添加一个路径注解,例如:

    @RequestMapping("/{userName}/{password}/{phone}/{email}/{roles}

    请求应该看起来像这样:

    localhost:8080/User/Daniel/test/0634554567/daniel/OWNER

    这根本不直观

    最后一件事:List&lt;String&gt; roles 是错误的。无论您使用路径还是查询参数,Spring 都不会转换为字符串列表。您必须自己将角色拆分为数组(可能使用,作为分隔符)或提供Converter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多