=========== RESTful案例 =========== 1 创建项目 IDEA 新建项目 空项目 项目名称:springboot IDEA 文件 项目结构... 模块 +新建模块 Spring Initializr 名称:springboot_02_01_restful 组:cn.tedu 软件包名称:cn.tedu.springboot 依赖项 Web Spring Web 2 实体类 @Data @NoArgsConstructor @AllArgsConstructor @ToString public class Book { private int id; private String name; private String author; private double price; } 3 控制器类 ________________________________________ HTTP请求 |Spring MVC|控制器类 ____________________|__________|________ <方法> <路径>/<参数>| 注解 | 方法1 <请求头> | -----> | 方法2 <请求体> | 映射 | 方法3 ____________________|__________|________ 3.1 带参数的POST方法 @Controller public class BookController { ... @RequestMapping(value = "/books", method = RequestMethod.POST) @ResponseBody public String addBook(@RequestBody Book book) { System.out.println("控制器> addBook(" + book + ")"); return "{'module': 'addBook'}"; } ... } POST http://localhost:8080/books { "name": "三国演义", "author": "罗贯中", "price": 21.35 } 控制器> addBook(Book(id=0, name=三国演义, author=罗贯中, price=21.35)) 3.2 带参数的DELETE方法 @Controller public class BookController { ... @RequestMapping(value = "/books/{id}", method = RequestMethod.DELETE) @ResponseBody public String delBook(@PathVariable Integer id) { System.out.println("控制器> delBook(" + id + ")"); return "{'module': 'delBook'}"; } ... } DELETE http://localhost:8080/books/1 控制器> delBook(1) 3.3 带参数的PUT方法 @Controller public class BookController { ... @RequestMapping(value="/books", method = RequestMethod.PUT) @ResponseBody public String modBook(@RequestBody Book book) { System.out.println("控制器> modBook(" + book + ")"); return "{'module': 'modBook'}"; } ... } PUT http://localhost:8080/books { "name": "三国演义", "author": "罗贯中", "price": 21.35 } 控制器> modBook(Book(id=0, name=三国演义, author=罗贯中, price=21.35)) 3.4 带参数的GET方法 @Controller public class BookController { ... @RequestMapping(value = "/books/{id}", method = RequestMethod.GET) @ResponseBody public String getBook(@PathVariable Integer id) { System.out.println("控制器> getBook(" + id + ")"); return "{'module': 'getBook'}"; } ... } GET http://localhost:8080/books/1 控制器> getBook(1) 3.5 不带参数的GET方法 @Controller public class BookController { ... @RequestMapping(value = "/books", method = RequestMethod.GET) @ResponseBody public String getBooks() { System.out.println("控制器> getBooks()"); return "{'module': 'getBooks'}"; } ... } GET http://localhost:8080/books 控制器> getBooks() 例程:springboot_02_01_restful 4 在控制器方法参数上使用注解 四个注解: - RequestParam :用于接收请求行中键值对形式的参数 - RequestHeader:用于接收请求头中键值对形式的参数 - RequestBody :用于接收请求体中Json串形式的参数 - PathVariable :用于接收请求行中键值对形式的参数,配合使用“{参数名}” 使用建议: - 参数少,RESTful风格,PathVariable,用的最多 - 参数多,Json串形式,RequestBody,有时用到 - 表单等非Json数据,RequestParam,很少用到