如果我向服务器发送带有参数的 get 请求,我会收到 405 Method not allowed by Postman
I get a 405 Method not allowed by Postman if I send my server a get request with params
如果我向我的服务器发送一个带有参数的 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。
我的邮递员要求Url:
http://localhost:8080/Server_war_exploded/user?userId=1
我是不是忘记了代码中的某些内容?
@Path("{userId}")
缺少正则表达式。它如何知道现在的用户 ID 是什么以及路径中的下一步是什么?
应该是这样的(如果你的id真的是一个字符串...):
@Path("{userId:\w+}")
通过在用户 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) {
}
使用这个 @Path("/{userId}")
。这会起作用。
URL 会喜欢这个:http://localhost:8080/Server_war_exploded/user/{userId}
示例:http://localhost:8080/Server_war_exploded/user/1
如果我向我的服务器发送一个带有参数的 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。
我的邮递员要求Url: http://localhost:8080/Server_war_exploded/user?userId=1
我是不是忘记了代码中的某些内容?
@Path("{userId}")
缺少正则表达式。它如何知道现在的用户 ID 是什么以及路径中的下一步是什么?
应该是这样的(如果你的id真的是一个字符串...):
@Path("{userId:\w+}")
通过在用户 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) {
}
使用这个 @Path("/{userId}")
。这会起作用。
URL 会喜欢这个:http://localhost:8080/Server_war_exploded/user/{userId}
示例:http://localhost:8080/Server_war_exploded/user/1