文章目录
SpringMVC学习笔记(二) - RESTful风格(重要)
综述
-
是一种网络资源访问的格式,是一种新的提议方法
-
按照REST风格访问资源时使用行为动作区分对资源进行何种操作(重要)
快速入门
请求方法设定
注意:公共部分可以写在控制器类头部
- 在控制器中的函数内设定http请求动作
@RequestMapping(value="/users",method=RequestMethod.POST) @ResponseBody public String save(@RequestBody User user){ System.out.println("user save..."+user); return "{'module':'user save'}"; } @RequestMapping(value="/users",method=RequestMethod.PUT) public String update(@RequestBody User user){ System.out.println("user update..."+user); return "{'module':'user update'}"; }
- 设定请求参数(路径变量)
@RequestMapping(value="/users/{id}",method=RequestMethod.DELETE) @ResponseBody public String delete(@PathVariable Integer id){ System.out.println("user delete..."+id); return "{'module':'user delete'}"; }
请求路径参数
-
区别:
@RequestParam
用于接收url地址传参或表单传参@RequestBody
用于接收json数据@PathVariable
用于接收路径参数,使用{参数名称}描述路径参数
-
应用:
- 后期开发中,发送请求参数超过1个时,以json格式为主,
@RequestBody
应用较广 - 如果发送非json格式数据,选用
@RequestParam
接收请求参数 - 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用
@PathVariable
接收请求路径变量,通常用于传递id值
- 后期开发中,发送请求参数超过1个时,以json格式为主,
快速开发
@RestController
定义在控制器类的上方,设置当前控制器类为RESTful风格,等同于合并@Controller
与@ResponseBody
两个注解的功能
标准请求动作映射(等效替代)
-
@GetMapping
@RequestMapping(value="/users",method=RequestMethod.GET)
-
@PostMapping
@RequestMapping(value="/users",method=RequestMethod.POST)
-
@PutMapping
@RequestMapping(value="/users",method=RequestMethod.PUT)
-
@DeleteMapping
@RequestMapping(value="/users",method=RequestMethod.DELETE)
-
【小结】:定义在控制器类对应方法上方,设置当前控制器方法请求访问你路径与请求动作,每种对应一个请求动作
基本案例:基于RESTful页面数据交互
初始化工程资料:提取码-6666
后台接口开发
- 制作SpringMVC控制器,并通过PostMan测试接口功能
@RestController @RequestMapping("/books") public class BookController { @PostMapping public String save(@RequestBody Book book){ System.out.println("book save ==> " + book); return "{'module':'book save success'}"; } @GetMapping public List<Book> getAll(){ List<Book> bookList = new ArrayList<Book>(); Book book1 = new Book(); book1.setType("计算机"); book1.setName("SpringMVC从入门到入土"); book1.setType("劝退书籍"); bookList.add(book1); Book book2 = new Book(); book2.setType("计算机"); book2.setName("SpringCloud微服务实战"); book2.setType("好书"); bookList.add(book2); //模拟数据 return bookList; } }
- 在config包下创建一个SpringMvcSupport类,设置对静态资源的访问放行
@Configuration public class SpringMvcSupport extends WebMvcConfigurationSupport { @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { //当访问pages/*时候,走/pages目录下的内容 registry.addResourceHandler("/pages/**").addResourceLocations("/pages/"); registry.addResourceHandler("/js/**").addResourceLocations("/js/"); registry.addResourceHandler("/css/**").addResourceLocations("/css/"); registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/"); } }
页面访问处理
- 在
/pages/books.html
页面下添加页面交互处理逻辑的函数,前端页面通过异步提交访问后台控制器//添加 saveBook () { axios.post("/books",this.formData).then((res)=>{ }); }, //主页列表查询 getAll() { axios.get("/books").then((res)=>{ this.dataList = res.data; }); },