Saltar al contenido

¿Cuál es la diferencia entre @RequestBody y @RequestParam?

Si encuentras alguna incompatibilidad con tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

@RequestParam los parámetros anotados se vinculan a parámetros de solicitud de Servlet específicos. Los valores de los parámetros se convierten al tipo de argumento del método declarado. Esta anotación indica que un parámetro de método debe vincularse a un parámetro de solicitud web.

Por ejemplo, la solicitud de Angular para Spring RequestParam(s) se vería así:

$http.post('http://localhost:7777/scan/l/register?username="Johny"&password="123123"&auth=true')
      .success(function (data, status, headers, config) 
                        ...
                    )

Punto final con RequestParam:

@RequestMapping(method = RequestMethod.POST, value = "/register")
public Map register(Model uiModel,
                                    @RequestParam String username,
                                    @RequestParam String password,
                                    @RequestParam boolean auth,
                                    HttpServletRequest httpServletRequest) {...

@RequestBody los parámetros anotados se vinculan al cuerpo de la solicitud HTTP. Los valores de los parámetros se convierten al tipo de argumento del método declarado mediante HttpMessageConverters. Esta anotación indica que un parámetro de método debe vincularse al cuerpo de la solicitud web.

Por ejemplo, la solicitud de Angular para Spring RequestBody se vería así:

$scope.user = 
            username: "foo",
            auth: true,
            password: "bar"
        ;    
$http.post('http://localhost:7777/scan/l/register', $scope.user).
                        success(function (data, status, headers, config) 
                            ...
                        )

Punto final con RequestBody:

@RequestMapping(method = RequestMethod.POST, produces = "application/json", 
                value = "/register")
public Map register(Model uiModel,
                                    @RequestBody User user,
                                    HttpServletRequest httpServletRequest) {... 

Espero que esto ayude.

@RequestParam hace que Spring asigne los parámetros de solicitud de la solicitud GET/POST al argumento de su método.

OBTENER solicitud

http://testwebaddress.com/getInformation.do?city=Sydney&country=Australia

public String getCountryFactors(@RequestParam(value = "city") String city, 
                    @RequestParam(value = "country") String country) 

Solicitud POST

@RequestBody hace que Spring asigne toda la solicitud a una clase modelo y desde allí puede recuperar o establecer valores de sus métodos getter y setter. Compruebe a continuación.

http://testwebaddress.com/getInformation.do

Tú tienes JSON los datos como tales provienen del front-end y llegan a su clase de controlador


   "city": "Sydney",
   "country": "Australia"

Java Código – servidor (@RequestBody)

public String getCountryFactors(@RequestBody Country countryFacts)
    
        countryFacts.getCity();
        countryFacts.getCountry();
    


public class Country 

    private String city;
    private String country;

    public String getCity() 
        return city;
    

    public void setCity(String city) 
        this.city = city;
    

    public String getCountry() 
        return country;
    

    public void setCountry(String country) 
        this.country = country;
    

Encabezado de solicitud HTTP del mapa Content-Typemaneja el cuerpo de la solicitud.

  • @RequestParamapplication/x-www-form-urlencoded,

  • @RequestBodyapplication/json,

  • @RequestPartmultipart/form-data,


  • RequestParam (API Spring Framework 5.1.9.RELEASE)

    asignar a parámetros de consulta, datos de formulario y partes en solicitudes de varias partes.

    RequestParam es probable que se use con campos de formulario de nombre y valor

  • Cuerpo de solicitud (Spring Framework 5.1.9. API DE LIBERACIÓN)

    vinculado al cuerpo de la solicitud web. El cuerpo de la solicitud se pasa a través de un HttpMessageConverter para resolver el argumento del método dependiendo de la content type de la solicitud (por ejemplo, JSON, XML)

  • RequestPart (Spring Framework 5.1.9.RELEASE API)

    se utiliza para asociar la parte de un “multipart/form-data” petición

    RequestPart es probable que se use con partes que tienen un contenido más complejo

  • HttpMessageConverter (Spring Framework 5.1.9.RELEASE API)

    un convertidor que puede convertir desde y hacia solicitudes y respuestas HTTP.

    Todas las clases de implementación conocidas: …, AbstractJsonHttpMessageConverter, AbstractXmlHttpMessageConverter, …

Nos puedes añadir valor a nuestra información aportando tu veteranía en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *