我有一個Spring MVC應用程序,允許用戶通過以下電話添加/刪除收藏夾重定向POST請求:的Java Spring MVC的前/使用攔截
POST /api/users/123/favorites/456
(添加項目456爲用戶123最喜歡的)DELETE /api/users/123/favorites/456
(移除項456作爲收藏用戶123)
我也想支持以下2個調用,這樣做同樣的事情(假設用戶123登錄):
POST /api/users/me/favorites/456
DELETE /api/users/me/favorites/456
我創建了一個攔截器,如下圖所示:
public class UserMeInterceptor extends HandlerInterceptorAdapter{
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{
Integer userId = AccessControlUtil.getUserId();
String redirectUrl = request.getContextPath() + request.getRequestURI().replace("/me/", "/" + userId + "/");
if(redirectUrl.endsWith("/me")){
redirectUrl = redirectUrl.replace("/me", "/" + userId);
}
response.sendRedirect(redirectUrl);
response.flushBuffer();
return false;
}
}
這種做法的偉大工程,但僅限於GET請求。任何方式我可以轉發/重定向POST請求並維護所有POST數據和方法類型?理想情況下,我想重複使用已定義來處理的情況下,當ID在傳遞同一個控制器。
哇 - DUH!這是太棒了。無法讓自己過去用戶id爲整數的方法,但這是那麼燦爛! –
@ user3285708 - 很高興我能幫助:) – SergeyB
@ user3285708 - 幫我個忙,請如果你喜歡它投了答案。 – SergeyB