如果我向服务器发送带参数的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
我忘记了代码中的某些内容吗?
答案 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