RestFul es un estilo de posicionamiento de recursos y operación de recursos, no es un estándar ni un protocolo. Software basado en este estilo
Puede ser más conciso, más jerárquico y más fácil de implementar el mecanismo de almacenamiento en caché.
La forma tradicional de operar Internet se logra a través de diferentes parámetros, y los métodos de solicitud son post y get. Para diferentes solicitudes, necesitamos usar diferentes rutas de solicitud:
localhost:8080/item/query?id=1
localhost:8080/item/add
localhost:8080/item/update
localhost:8080/item/delete?id=1
Usando el estilo RestFul, podemos mantener la ruta de solicitud sin cambios y llamar a diferentes métodos a través de diferentes métodos de solicitud para lograr diferentes funciones:
localhost:8080/item/1 GET请求
localhost:8080/item POST请求
localhost:8080/item PUT请求
localhost:8080/item/1 DELETE请求
Primero, observe el método de solicitud tradicional: uri? Parámetro 1 = valor 1 & parámetro 2 = valor 2 ...
package com.zzt.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RestFulController {
@RequestMapping("/add")
public String test(int a, int b, Model model){
model.addAttribute("msg",a+b);
return "test";
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
@PathVariable anotación: se utiliza para implementar el estilo RestFul
package com.zzt.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RestFulController {
@RequestMapping("/add/{a}/{b}")
public String test(@PathVariable int a,@PathVariable int b, Model model){
model.addAttribute("msg",a+b);
return "test";
}
}
Tomando el código anterior como ejemplo, @PathVariable especifica que el valor del parámetro -int a proviene de {a} en uri, y el valor del parámetro -int b proviene de {b} en uri
En este momento, será incorrecto acceder de la manera tradicional, y debe usar el estilo RestFul para recibir parámetros:
¿Recuerda que mencionamos que @RequestMapping puede establecer el método de solicitud? Sí, se puede combinar con este atributo. (Por supuesto, SpringMVC también proporciona subanotaciones, @GetMapping, @PostMapping, etc.).
@GetMapping("/add/{a}/{b}")
public String testGet(@PathVariable int a,@PathVariable int b, Model model){
model.addAttribute("msg","get请求到达 : " + (a + b));
return "test";
}
@PostMapping("/add/{a}/{b}")
public String testPost(@PathVariable int a,@PathVariable int b, Model model){
model.addAttribute("msg","post请求到达 : "+ (a+b));
return "test";
}
<body>
<a href="add/1/2">get提交方式
<form action="add/3/4" method="post">
<input type="submit" value="提交">
</form>
</body>
Ventajas de RestFul: conciso (elimina el problema de usar nombres de parámetros), eficiente (mecanismo de almacenamiento en caché) y seguro (porque la solicitud no incluye nombres de parámetros)