Version: Next

RESTFul风格

概念

RESTFul就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制

功能

  • 资源:互联网所有的事物都可以被抽象为资源
  • 资源操作:使用POST、DELETE、PUT、GET等不同方法对资源进行操作
  • 分别对应添加、删除、修改、查询

对比

  • 传统资源操作方式
URL请求方式
http://127.0.0.1/item/queryItem.action?id=1GET查询
http://127.0.0.1/item/saveItem.actionPOST新增
http://127.0.0.1/item/updateItem.actionPOST更新
http://127.0.0.1/item/deleteItem.action?id=1GET或POST删除
  • RESTFul资源操作方式
URL请求方式
http://127.0.0.1/item/1GET查询
http://127.0.0.1/itemPOST新增
http://127.0.0.1/itemPUT更新
http://127.0.0.1/item/1DELETE删除

@PathVariable

想要获取在浏览器路径中写的参数,可以用@pathVaribale注解,让方法参数的值对应绑定到一个URI模板变量上

  • 原先的

    http://localhost:8080/add?a=1&b=2
  • RESTFul

    http://localhost:8080/add/a/b

    可以在@RequestMapping设置请求采用的方法

    @Controller
    public class RESTFulController {
    @RequestMapping(path = "/add/{a}/{b}" , method = RequestMethod.GET)
    public String test1(@PathVariable int a,@PathVariable int b, Model model) {
    int result = a + b;
    model.addAttribute("msg", "结果为" + result);
    return "test";
    }
    }

可以不设置RequestMapping的请求方式,直接使用下面的注解设定请求方式

@GetMapping

@PostMapping

@DeleteMapping

@PutMapping

@Controller
public class RESTFulController {
@GetMapping("/add/{a}/{b}")
public String test1(@PathVariable int a,@PathVariable int b, Model model) {
int result = a + b;
model.addAttribute("msg", "结果为" + result);
return "test";
}
}

使用RESTFul的好处

  • 相同的请求路径,可以根据方法区分出不同的函数进行处理
  • 不用暴露请求参数