如果我向服务器发送带参数的get请求,则会收到Postman不允许的405方法

时间:2019-07-12 09:41:23

标签: java http server glassfish

如果我向服务器发送带参数的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 个答案:

答案 0 :(得分:0)

Error handling response: TypeError: window.getSelection is not a function

缺少正则表达式。它怎么知道现在的用户ID是什么,以及下一步只是什么?

应该是这样的(如果您的ID确实是一个字符串...): @Path("{userId}")

答案 1 :(得分:0)

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

@GET
@Path("/{userId}")
     public Response getBook(@PathParam("userId") String id) {
}

如果您使用的是PathParam,则还需要将网址更改为

 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) {
    }

答案 2 :(得分:0)

使用此@Path("/{userId}")。这将起作用。

URL会这样:http://localhost:8080/Server_war_exploded/user/{userId}

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