5. Estilo RESTful de SpringMVC e interacción asíncrona ajax

5. Estilo RESTful de SpringMVC e interacción asíncrona ajax

Springmvc usa MappingJackson2HttpMessageConverter para convertir datos json de forma predeterminada y necesita agregar
el paquete jackson; al mismo tiempo, use <mvc:annotation-driven />

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.8</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.8</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

1. Anotación @RequestBody

Esta anotación se usa para la declaración de parámetros formales del método Controller.Cuando se envía usando ajax y especificando contentType como json, se convertirá en el objeto POJO correspondiente a través de la interfaz HttpMessageConverter.

    <input type="text" id="username" name="username" />
    <input type="text" id="age" name="age" />
    <button id="btn" >button2</button>
    <script>
        $("#btn").click(function () {
    
    

            let url = '${pageContext.request.contextPath}/user/ajaxRequest';
            let data = '[{"id":1,"username":"张三"},{"id":2,"username":"李四"}]';

            $.ajax({
    
    
                type: 'POST',
                url: url,
                data : data,
                contentType : 'application/json;charset=utf-8',
                success: function (resp) {
    
    
                    alert(JSON.stringify(resp));
                }
            })
        })
    @RequestMapping("/ajaxRequest")
    @ResponseBody
    public List<User> ajaxRequest(@RequestBody List<User> list){
    
    
        System.out.println(list);
        return list;
    }

2. @cuerpo de respuesta

Esta anotación se utiliza para convertir el objeto devuelto por el método Controller en datos en el formato especificado a través de la interfaz HttpMessageConverter, como: json, xml, etc., y responder al cliente a través de Response.

/*
 @RequestMapping
 produces = "application/json;charset=utf-8" 响应返回数据的mime类型和编码,默认为
json
*/
@RequestMapping(value = "/ajaxRequest")
@ResponseBody
public List<User> ajaxRequest(@RequestBody List<User> list) {
    
    
  System.out.println(list);
  return list;
}

3. Qué es RESTful

Restful es un estilo arquitectónico de software y un estilo de diseño, no un estándar, pero solo proporciona un conjunto de principios y restricciones de diseño. Utilizado principalmente para el software de interacción cliente-servidor, el software diseñado en base a este estilo puede ser más conciso, más jerárquico y más fácil de implementar mecanismos de almacenamiento en caché.

Las solicitudes de estilo tranquilo usan "url + método de solicitud" para indicar el propósito de una solicitud. Los cuatro verbos en el protocolo HTTP que indican el método de operación son los siguientes:

  • OBTENER: leer (Leer)

  • POST: Nuevo (Crear)

  • PUT:更新(Actualizar)

  • ELIMINAR: Eliminar

    imagen-20220312154246255

4. Implementación del código

  • @PathVariable se
    usa para recibir el valor del marcador de posición en la dirección de solicitud RESTful
  • @RestController El
    estilo RESTful se usa principalmente para el desarrollo de proyectos de separación de front-end y back-end. El front-end interactúa con el servidor de forma asincrónica a través de ajax. Nuestro procesador generalmente devuelve datos json, por lo que @RestController se usa para reemplazar @Controller y @ Anotaciones de ResponseBody.
// @Controller
@RestController
public class RestFulController {
    
    
  @GetMapping(value = "/user/{id}")
  // 相当于 @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
  // @ResponseBody
  public String get(@PathVariable Integer id) {
    
    
    return "get:" + id;
 }
  @PostMapping(value = "/user")
  // @ResponseBody
  public String post() {
    
    
    return "post";
 }
  @PutMapping(value = "/user")
  // @ResponseBody
  public String put() {
    
    
    return "put";
 }
  @DeleteMapping(value = "/user/{id}")
  // @ResponseBody
  public String delete(@PathVariable Integer id) {
    
    
    return "delete:"+ id;
 }
}

Supongo que te gusta

Origin blog.csdn.net/qq_41239465/article/details/123447957
Recomendado
Clasificación