java - starter - spring io
Spring MVC @Path variable con llaves{} (1)
Utilice http://localhost:8080/user/item/john
para enviar su solicitud.
Le loginName
Spring un valor de "{john}" a la variable de ruta loginName
, de modo que Spring lo obtenga con "{}"
Web MVC framework establece que
Patrones de plantillas URI
Las plantillas de URI se pueden usar para acceder cómodamente a partes seleccionadas de una URL en un método de @RequestMapping.
Una plantilla de URI es una cadena similar a URI , que contiene uno o más nombres de variables. Cuando sustituye los valores de estas variables, la plantilla se convierte en un URI . El RFC propuesto para las plantillas URI define cómo se parametriza un URI. Por ejemplo, la plantilla de URI http://www.example.com/users/ {userId} contiene la variable userId . Al asignar el valor fred a la variable, se obtiene http://www.example.com/users/fred .
En Spring MVC puede usar la anotación @PathVariable en un argumento de método para vincularla al valor de una variable de plantilla URI:
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
La plantilla de URI "/ owners / {ownerId}" especifica el nombre de variable ownerId. Cuando el controlador maneja esta solicitud, el valor de ownerId se establece en el valor encontrado en la parte apropiada del URI. Por ejemplo, cuando llega una solicitud para / owners / fred, el valor de ownerId es fred.
Estoy desarrollando una aplicación usando Spring Boot. En el controlador REST prefiero usar la variable de ruta (anotación @PathVariabale
). Mi código que recupera la variable de ruta pero contatina {} se pone en llaves como está en la url. Por favor, alguien me sugiera para resolver este problema.
@RequestMapping(value = "/user/item/{loginName}", method = RequestMethod.GET)
public void getSourceDetails(@PathVariable String loginName) {
try {
System.out.println(loginName);
// it print like this {john}
} catch (Exception e) {
LOG.error(e);
}
}
URL
http://localhost:8080/user/item/{john}
Fuera puesto en el controlador
{Juan}