377 votes

@RequestParam vs @PathVariable

Quelle est la différence entre @RequestParam y @PathVariable tout en traitant les caractères spéciaux ?

+ a été accepté par @RequestParam comme espace.

Dans le cas de @PathVariable , + a été accepté comme + .

1voto

Les deux annotations se comportent exactement de la même manière.

Seuls 2 caractères spéciaux '!' et '@' sont acceptés par les annotations @PathVariable et @RequestParam.

Pour vérifier et confirmer le comportement, j'ai créé une application Spring Boot qui ne contient qu'un seul contrôleur.

 @RestController 
public class Controller 
{
    @GetMapping("/pvar/{pdata}")
    public @ResponseBody String testPathVariable(@PathVariable(name="pdata") String pathdata)
    {
        return pathdata;
    }

    @GetMapping("/rpvar")
    public @ResponseBody String testRequestParam(@RequestParam("param") String paramdata)
    {
        return paramdata;
    }
}

En suivant les demandes, j'ai obtenu la même réponse :

  1. localhost:7000/pvar/!@#$%^&*()_+-=[]{}|;':",./<>?
  2. localhost:7000/rpvar?param=!@#$%^&*()_+-=[]{}|;':",./<>?

!@ a été reçu comme réponse dans les deux demandes

0voto

andy Points 149

Il se peut que le type midia application/x-www-form-urlencoded convertisse l'espace en + et le récepteur décodera les données en convertissant l'adresse IP en une adresse IP. + pour l'espace. Vérifiez l'url pour plus d'informations. http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X