我是Spring的新手,而我的其他控制器运行良好但是当我尝试调用getmyfriends
端点时,我得到了405 Method Not Allowed
:
@Controller
@Path("friends")
public class FreindsJersey {
@Autowired
private FriendsService friendsService;
@POST
@Path("getmyfriends")
@Produces(MediaType.APPLICATION_JSON)
public Response getAllMyFriends(String json) {
ReturnData returnData = (ReturnData) Parser.getJsonFromString(json, ReturnData.class);
return Response.ok(friendsService.getMyFriendsList(returnData).getContainer()).build();
}
@GET
@Path("unfriend/{userId}/{friendId}")
@Produces(MediaType.APPLICATION_JSON)
public Response unfriendUser(@PathParam("userId") long userId, @PathParam("friendId") long friendId) {
return Response.ok(friendsService.deleteAFriendOfTheUser(userId, friendId).getContainer()).build();
}
}
答案 0 :(得分:3)
getAllMyFriends
需要POST
在浏览器中输入网址时,会使用GET
。您无法从网址栏中POST
。
您的代码仅允许POST
。
@POST // <-- here
@Path("getmyfriends")
@Produces(MediaType.APPLICATION_JSON)
public Response getAllMyFriends(String json) {
ReturnData returnData = (ReturnData) Parser.getJsonFromString(json, ReturnData.class);
return Response.ok(friendsService.getMyFriendsList(returnData).getContainer()).build();
}
事实上,你有倒退 - safe and idempotent请求应为GET
(例如getAllMyFriends
); 不安全和非幂等请求应为POST
(例如unfriendUser
)。