gpt4 book ai didi

java - Post 方法不适用于 Play 2.5 中的类对象

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

我尝试从 PostMan 调用 Post 方法,但无法调用。

Controller 文件:

public class UserController extends Controller{

public Result getAll() {
List<User> users = new ArrayList<User>();
users.add(new User("Vinit", "vinitsolanki@yahoo.com", 25));
users.add(new User("Jaimin", "jaimin@yahoo.com", 25));
return ok(Json.toJson(users));
}

public Result get(Long id) {

User user = new User();
user.setId(id);
user.setName("Vinit");
user.setEmail("vinitsolanki@yahoo.com");
user.setAge(25);

return ok(Json.toJson(user));

}

public Result create(User user){

return ok(Json.toJson(user));
}
}

路线文件:

#User
#Method.Type url mapping with method
GET /user controllers.UserController.getAll
GET /user/:id controllers.UserController.get(id: Long)
POST /user controllers.UserController.create

两个 get 方法 /url/user/:id 工作正常,但我对 post /user 有点困惑。我尝试了文件中的代码,但出现了上述错误。

missing arguments for method create in class UserController;
follow this method with `_' if you want to treat it as a partially applied function

最佳答案

基本上有两种方法可以做到这一点。

您可以使用默认正文解析器(这是您在评论中提到的方式):

public Result create() {
JsonNode json = request().body().asJson();
User user = Json.fromJson(json, User.class);
return ok(Json.toJson(user));
}

第二种方法是使用显式正文解析器:

@BodyParser.Of(BodyParser.Json.class)
public Result create() {
RequestBody body = request().body();
User user = // some logic here
return ok(body.asJson());
}

奖励:您可以使用 BodyParser.TolerantJson 代替 BodyParser.Json:与 Json 相同,但不验证内容-类型 header 为 JSON。

有关更多信息,您可以查看Play documentation regarding body parsers

关于java - Post 方法不适用于 Play 2.5 中的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232209/

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