Мне нужно изменить путь URI Переменная. т. е. всякий раз, когда я получаю запрос на "/api/stories/27/comments/32"
, он должен преобразовываться в "/api/stories/27/comments/323322X"
. Я использовал фильтры для изменения URI запроса, используя указанные ниже методы:
@Component
public class HashIDFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if (request.getRequestURL().toString().contains("/comments/")) {
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(request) {
@Override
public String getRequestURI() {
System.out.println("orig url:" + request.getRequestURL().toString());
String arr[] = request.getRequestURL().toString().split("/comments/");
String url = arr[0] + "/comments/" + "3442424/";// HashIdSimple.decode(arr[1]);
System.out.println("url:" + url);
return url;
}
};
request.getRequestDispatcher(requestWrapper.getRequestURI()).forward(request, response);
} else {
System.out.println("req");
chain.doFilter(req, res);
}
}
}
Ниже указанногосообщается об ошибке:
{
"timestamp": "2019-10-26T14:32:19.932+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/stories/27/comments/32"
}
Вместо RequestDispatcher я попытался с
chain.doFilter(requestWrapper, response);
Все еще не повезло, так как он вызывает API со значением только 32 т.е. только предыдущее значение. Пожалуйста, помогите мне решить эту проблему.
Ожидается, что URI входящего запроса должен быть изменен в новом запросе URI, и должен быть вызван соответствующий API.