gpt4 book ai didi

Java MongoDB POST : 415 unsupported mediatype

转载 作者:行者123 更新时间:2023-12-02 03:16:25 26 4
gpt4 key购买 nike

我正在构建我的第一个 API。 GET 请求有效,但我陷入了 POST 请求,并出现错误 415 不支持的媒体类型。经过一番查找和重写代码,仍然失败。有人明白为什么吗?参数值为:

-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"]

最佳答案

您有两个问题:

  1. 省略 @Consumes(MediaType.APPLICATION_JSON) 。你的请求与json没有任何关系。
  2. @PathParam 应该替换为 @RequestParam 。这些值作为请求参数(查询字符串)读取,而不是作为路径部分读取。

此外,在请求示例中,您应该删除 / 之后的额外 User :

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

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

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

请求应该类似于:

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

这根本不直观

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

关于Java MongoDB POST : 415 unsupported mediatype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40218320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com