为了账号安全,请及时绑定邮箱和手机立即绑定

如果我向服务器发送带有参数的 get 请求,我会收到 405 Method not allowed

如果我向服务器发送带有参数的 get 请求,我会收到 405 Method not allowed

小怪兽爱吃肉 2023-03-23 15:41:25
如果我向我的服务器发送一个带有参数的 GET 请求,我会得到一个 405 - Method not allowed. package pkgService; import com.fasterxml.jackson.databind.ObjectMapper; import pkgData.pkgEmployee.User; import pkgServer.pkgUser.UserManagement; import javax.ws.rs.*; import javax.ws.rs.core.Response;@Path("/user")public class UserRouter {     private UserManagement userManagement;     private ObjectMapper objMap;     public UserRouter() {         this.userManagement = new UserManagement();         objMap = new ObjectMapper();         //TODO delete test data         userManagement.addUser(new User(1,"lukad", "luki"));         userManagement.addUser(new User(2,"meli", "malal"));     }     @GET     @Path("{userId}")     public Response getBook(@PathParam("userId") String id) {         Response.ResponseBuilder response = Response.status(Response.Status.OK);         try {             response.entity(objMap.writeValueAsString(userManagement.getUser(id)));         } catch (Exception e) {             response.status(Response.Status.BAD_REQUEST);             response.entity("[ERROR] " + e.getMessage());         }         return response.build();     } }我希望获得 ID 为 1 (lukad,luki) 的用户,但我收到了 405。我的邮递员请求网址: http://localhost:8080/Server_war_exploded/user?userId=1我忘记了代码中的某些内容吗?
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

通过在用户 ID 前添加“/”来更改功能


@GET

@Path("/{userId}")

     public Response getBook(@PathParam("userId") String id) {

}

此外,如果您使用的是 PathParam,那么您还需要将 url 更改为


 http://localhost:8080/Server_war_exploded/user/1

其中 1 是用户 ID


但是如果你想使用


 http://localhost:8080/Server_war_exploded/user?userId=1

然后您需要使用 QueryParams 并按如下方式更改代码


 @GET

 public Response getBook(@QueryParam("userId") String id) {

    }


查看完整回答
反对 回复 2023-03-23
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

使用这个@Path("/{userId}")。这会起作用。

网址会像这样:http://localhost:8080/Server_war_exploded/user/{userId}

例子 :http://localhost:8080/Server_war_exploded/user/1


查看完整回答
反对 回复 2023-03-23
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

@Path("{userId}")

它缺少正则表达式。它如何知道现在的用户 ID 是什么以及路径的下一步是什么?

它应该是这样的(如果你的 id 真的是一个字符串......): @Path("{userId:\\w+}")


查看完整回答
反对 回复 2023-03-23
  • 3 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信