5. Estilo RestFul
5.1. Concepto
Restful es un estilo de posicionamiento y operación de recursos. No es un estándar ni un acuerdo, es solo un estilo. El software diseñado en base a este estilo puede ser más conciso, más estratificado y más fácil de implementar mecanismos como el almacenamiento en caché.
5.2, función
Recursos: todo lo que hay en Internet se puede abstraer como recursos
Operaciones de recursos: use POST, DELETE, PUT, GET y use diferentes métodos para operar con los recursos.
Agregar, eliminar, modificar y consultar respectivamente.
5.3. Operar los recursos de forma tradicional
¡A través de diferentes parámetros para lograr diferentes efectos! Método único, publicar y obtener
http://127.0.0.1/item/queryItem.action?id=1 consulta, OBTENER
http://127.0.0.1/item/saveItem.action agregado, POST
http://127.0.0.1/item/updateItem.action actualización, POST
http://127.0.0.1/item/deleteItem.action?id=1 eliminar, OBTENER o PUBLICAR
5.4, use recursos operativos RESTful
¡Se pueden lograr diferentes efectos a través de diferentes métodos de solicitud! De la siguiente manera: La dirección de solicitud es la misma, ¡pero la función puede ser diferente!
http://127.0.0.1/item/1 consulta, OBTENER
http://127.0.0.1/item nuevo, POST
http://127.0.0.1/item update, PUT
http://127.0.0.1/item/1 eliminar, ELIMINAR
5.5, prueba
-
Crea una nueva clase RestFulController
@Controller public class RestFulController { }
-
Puede usar la anotación @PathVariable en Spring MVC para vincular el valor del parámetro del método a una variable de plantilla URI.
package com.kuber.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @Controller public class RestFulController { @RequestMapping("/add/{a}/{b}") public String test1(@PathVariable int a, @PathVariable String b, Model model){ String res = a + b; model.addAttribute("msg","加法结果1为:"+res); return "controller1"; } }
-
Solicitar resultados de prueba
-
Pensando: ¿Cuáles son los beneficios de usar variables de ruta?
-
-
Haz el camino más conciso;
-
Es más conveniente obtener parámetros y el marco realizará automáticamente la conversión de tipos.
-
Los parámetros de acceso se pueden restringir por el tipo de la variable de ruta. Si los tipos son diferentes, no se puede acceder al método de solicitud correspondiente. Por ejemplo, si la ruta de acceso es / commit / 1 / a, entonces la ruta no coincide con el método y no será el parámetro Conversión fallida. El de arriba es int y el otro es string. Aquí cambiamos a dos ints e ingresamos la ruta para ver el resultado
-
@Controller public class RestFulController { @RequestMapping("/add/{a}/{b}") public String test1(@PathVariable int a, @PathVariable int b, Model model){ int res = a + b; model.addAttribute("msg","加法结果1为:"+res); return "controller1"; } }
-
5.6, use el atributo de método para especificar el tipo de solicitud
Se utiliza para restringir el tipo de solicitud, lo que puede limitar el alcance de la solicitud. Especifique el tipo de predicado de solicitud, como GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE, etc.
Probémoslo:
-
Agregar un método
//映射访问路径,必须是POST请求 @RequestMapping(value = "/hello",method = RequestMethod.POST) public String test2(Model model){ model.addAttribute("msg","hello!!!"); return "controller1"; }
-
Usamos la barra de direcciones del navegador para acceder a la solicitud de obtención predeterminada y se informará el error 405:
-
Si modifica POST a GET, es normal
@RequestMapping(value = "/hello",method = RequestMethod.GET) public String test2(Model model){ model.addAttribute("msg","hello!!!"); return "controller1"; }
resumen:
La anotación @RequestMapping de Spring MVC puede manejar métodos de solicitud HTTP, como GET, PUT, POST, DELETE y PATCH.
Todas las solicitudes de la barra de direcciones serán HTTP GET de forma predeterminada.
Las variantes de anotación a nivel de método son las siguientes: anotación combinada
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@GetMapping es una anotación combinada y se usará con más frecuencia.
Lo que reproduce es un atajo de @RequestMapping (método = RequestMethod.GET).