J'ai un problème avec les slashs dans les variables qui devraient être envoyées dans l'url. Par exemple, l'id pourrait être comme ceci :
ID: /gfdge1/DkxA8P+jYw43
URL: localhost:8080/find-user//gfdge1/DkxA8P+jYw43
"error": "Internal Server Error",
"exception": "org.springframework.security.web.firewall.RequestRejectedException",
"message": "The request was rejected because the URL was not normalized.",
à cause de cette barre oblique en première position, cela pose un problème
Avant cela, j'avais des problèmes avec ces barres obliques au milieu de l'ID, mais j'ai résolu ce problème avec ce code :
@RequestMapping(name = "Get user data by ID", value = "/find-user/{userId}/**", method = RequestMethod.GET)
@ResponseBody
public User getUserData(@PathVariable String userId, HttpServletRequest request) {
final String path =
request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();
final String bestMatchingPattern =
request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString();
String arguments = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern, path);
String id="";
if (null != arguments && !arguments.isEmpty()) {
id = userId + '/' + arguments;
} else {
id = userId;
}
return userService.getUserData(id);
}
mais cela ne fonctionne pas dans le cas présent où la barre oblique est en première position. J'ai également essayé d'utiliser RequestParam au lieu de PathVariable, mais cela pose des problèmes avec certains caractères spéciaux, par exemple lorsque j'utilise RequestParam, il remplace '+' par un espace vide,...
Quelqu'un peut-il m'aider à résoudre ce problème ?