Spring基础篇:SpringMVC的RESTful编程

79 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情

解释RESTful

RESTful主要对应的是HTTP协议中的四种请求方式:GETPOSTPUTDELETE。是不是不太熟悉?换个说法:CURD(增删改查)是不是熟悉一点了。其实就是将四种不同的请求方式对应不同类型的请求。

  1. GET: 负责查询数据,业务功能一般是SELECT,将返回封装的JSON对象。
  2. POST: 负责新增数据,业务功能一般是INSERT,将接收封装好的数据插入到数据库中。
  3. PUT: 负责修改数据,业务功能一般是UPDATE,将接收封装好的数据,根据条件更新数据库中已有的数据。
  4. DELETE: 负责删除数据,业务功能一般是DELETE,将根据某种条件,删除某行或者多行数据库中的数据。

老的请求方式 @RequestMapping

通常使用SpringMVC写请求映射的时候用的是@Requestmapping注解,比如说:

@Controller
public class UserController{
    @RequestMapping("/user")
    public string getUsers(){
        // do...
    }
}

这个UserController其中的getUsers方法负责响应/user的请求,这个无参数的映射还看不出什么,但是有两个隐含的问题

  1. 其他程序员看这个请求,不清楚这个请求是具体在做哪项业务(GET/POST/PUT/DELETE)
  2. /user这个映射就被写死了,不能再写第二个@RequestMapping("/user")
  3. GET、POST、PUT、DELETE方式都能被RequestMapping接收,只要对应/user请求路径

RESTful风格的请求方式

那我们再看使用RESTful风格的请求映射。以Get请求为例子。

@Controller
public class UserController{
    // @RequestMapping(value = "/user",method ="GET")
    @GetMapping("/user")
    public string getUsers(){
        // do...
    }
}
  1. @RequestMapping(value = "/user",method ="GET")

这里也就多指定了一个属性:method,内容是GET,这表示这个请求只响应的是Get方法,而且通过RESTful风格的规定,这个方法表示的是一个查找操作,这种风格能增加代码的规范性和可读性。

  1. 它的简便形式:@GetMapping("/user"),这个就是简写。

其它的简写形式:

  • @PostMapping:新增业务,负责post方法的请求。
  • @DeleteMapping:删除业务,负责delete方法的请求。
  • @PutMapping:更新业务,负责put方法的请求。