1、RESTful简介
REST的全称:REpresentational State Transfer
译为“表现层状态转移”
REST是一种互联网软件架构设计风格
定义一组用于创建web服务的约束
符合REST架构的Web服务,称为RESTful Web服务
2、RESTful风格
URL中使用名词(建议用复数形式),不使用动词
推荐:/books、/books/6
不推荐:/listBooks、/getBooks?id=6、/book/list、/book/get?id=6
使用HTTP的方法表达动作
| GET:查询 | POST:创建 | PUT:更新 | DELETE:删除 | |
|---|---|---|---|---|
/books |
查询所有书 | 创建一本书 | 更新所有书的信息 | 删除所有书的信息 |
/books/6 |
查询id为6的书 | 405 Method Not Allow | 更新id为6的书的信息 | 删除id为6的书的信息 |
一个资源连接到其他资源使用的是子资源的形式
GET /books/6/pages/77
POST /books/7/pages
2.1、使用时的注意点
1、API版本化,使用不同的版本的两个接口v1、v2
sj.com/v1/books
sj.com/v2/books/6
2、返回数据发生错误时,不要返回200状态码
2.2、PUT、DELETE
浏览器的form不支持put、delete,可以使用HiddenHttpMethodFilter进行转化
put请求:post + _method = put
delete请求:post + _method = delete
<form action="${ctx}/skills/10" method="post">
<input type="hidden" name="_method" value="put">
<button type="submit">提交</button>
</form>
以上的form请求,匹配的method为put
@Controller
@RequestMapping("/skills")
public class SkillController {
@PutMapping("/{id}")
public String update(@PathVariable("id") Integer id, Skill skill) {
System.out.println("update");
return "更新成功";
}
}
为了安全起见,现在很多公司都严格禁用
PUT、DELETE请求
2.3、@RestController
@RestController = @Controller + @ResponseBody
1、使用@RestController默认情况下都会方法增加@ResponseBody
2、如果希望跳转到页面,还是得使用ModelAndView对象
@RestController
public class TestController {
@GetMapping("/{id}")
public Skill get(@PathVariable("id") Integer id) {
return null;
}
@GetMapping("/view/{id}")
public ModelAndView view(@PathVariable("id") Integer id) {
ModelAndView mv = new ModelAndView();
mv.setViewName("/page/index.jsp");
mv.addObject("name", "jack");
return mv;
}
}









网友评论