我有以下方法来修改Postgres数据库中的用户:
public void modifyUser(User usr){
try (Connection conn = sql2o.beginTransaction()){
conn.createQuery("update public.\"user\" set name=:name, lastname=:lastname, email=:email where id=:id")
.addParameter("id", usr.getId())
.addParameter("name", usr.getName())
.addParameter("lastname", usr.getLastname())
.addParameter("email", usr.getEmail())
.executeUpdate();
conn.commit();
}
}
这种方法调用的方法:
//update
put("/users", (request, response) -> {
response.type("application/json");
User user = new Gson().fromJson(request.body(), User.class);
model.modifyUser(user);
return new Gson().toJson(response);
});
我使用Postman来指定身体,这样:
{ "id": 3,
"name": "Mary",
"lastname": "Changed",
"email": "email"
}
但是,即使post方法工作正常,此“put”操作也会引发以下错误:
spark.http.matching.MatcherFilter - The requested route [/users/] has not been mapped in Spark for Accept: [*/*]
我不知道错误是什么。我找不到解决方案。
不知道确切原因,但问题在于
put("/users", (request, response) -> {
在这种情况下,Spark希望将其写为
put("/users/", (request, response) -> {
与接受第一个版本的“post”方法不同。