【学习笔记】RestFul风格
RestFul就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格,基于这种风格的软件可以更简洁,更有层次,更易于实现缓存等机制。
比如:
之前的风格的url:http://localhost:8080/method?name=admin&password=12356
RestFul风格:http://localhost:8080/method/admin/12345
对比之前的url,使用RestFul风格的url变得更加简洁
RestFul风格的功能
资源:互联网所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、GET、PUT 不同方法对资源进行操作
在传统方式操作资源:通过不同的参数来实现不同的效果,方法单一,只有post和get
-
http://localhost:8080/method/save 增加 POST方式
-
http://localhost:8080/method/update 增加 POST方式
-
http://localhost:8080/method/delete?id=1 删除 POST或GET方式
使用RestFul操作资源:可以通过不同的请求方式来实现不同的效果
-
http://localhost:8080/method/1 查询 GET方式
-
http://localhost:8080/method/ 增加 POST方式
-
http://localhost:8080/method/ 增加 POST方式
-
http://localhost:8080/method/1 删除 DELETE方式
通过代码来测试RestFul风格
我们从前端获取两个参数,并将计算结果返回到前端
之前的方式:
@Controller
public class RestFulController {
@RequestMapping("/add")
public String test(int a, int b, Model model){
int res = a+b;
model.addAttribute("msg","计算结果是:"+res);
return "hello";
}
}
直接在方法中,传入参数,前端的url为:http://localhost:8080/springmvc/add?a=10&b=11
通过RestFul风格:
首先在要传入的参数前面加一个注解@PathVariable,然后从@RequestMapping注解中直接取参数,如下:@RequestMapping("/add/{a}/{b}")
@Controller
public class RestFulController {
@RequestMapping("/add/{a}/{b}")
public String test(@PathVariable int a,@PathVariable int b, Model model){
int res = a+b;
model.addAttribute("msg","计算结果是:"+res);
return "hello";
}
}
之前的url方式已经不可用
现在的url:http://localhost:8080/springmvc/add/10/12
相当于把 10 赋值给a ,把12 赋值给b
除此之外,我们还可以指定访问的方式
在RequestMapping中有一个枚举类RequestMethod,里面有一些访问的方式,如 GET,POST等
public enum RequestMethod {
GET,
HEAD,
POST,
PUT,
PATCH,
DELETE,
OPTIONS,
TRACE;
private RequestMethod() {
}
}
在RequestMapping注解中,指定访问的方式
@RequestMapping(value="/add/{a}/{b}",method = RequestMethod.DELETE)
我们指定了访问方式为DELETE后,再去访问,会报错405
请求方式为GET,而要求的为DELETE,所以会报405
除了这种方式指定访问方式之外,还有一些注解,可以用来指定访问方式
@GetMapping("/add/{a}/{b}")
@DeleteMapping
@PostMapping
@PutMapping
如果有多种方式,访问了一个url,他会自动匹配适合的方式
如果通过表单指定提交的方式,就会发现相同的url,直接访问是GET方式,提交表单是POST方式
RestFul风格主要可以保证程序的安全性,没有把程序中的参数暴漏在url中