目录
@RequestBody、@RequestParm、@PathVariable比较
1、REST简介
REST简介
●REST (Representational State Transfer) ,表现形式状态转换
■传统风格资源描述形式
http://localhost/user/getById?id=1
http://localhost/user/saveUser
■ REST风格描述形式
http://localhost/user/1
http://localhost/user
●优点:
■隐藏资源的访问行为,无法通过地址得知对资源是何种操作。
■书写简化
注意事项
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如: users. books. acounts...
2、RESTful入门案例
①设定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)
@ResponseBody
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'}";
}
注解学习
@RequestMapping
@PathVariable
@RequestBody、@RequestParm、@PathVariable比较
●区别
■@RequestParam用于接收url地址传参或表单传参
■@RequestBody用于接收json数据
■@PathVariable用于 接收路径參数,使用{参数名称}描述路径参数
●应用
■后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
■如果发送非json格式数据, 选用@RequestParam接收请求参数
■采用RESTful进行开发, 当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量, 通常用于传递id值
3、REST简化开发注解学习
@RestController
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
4、RESTful风格开发案例
①制定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(){
System.out.println("book getAll is running ...");
List<Book> bookList = new ArrayList<Book>();
Book book1 = new Book();
book1.setType("计算机");
book1.setName("SpringMVC入门教程");
book1.setDescription(“小试牛刀");
bookList.add(book1);
//模拟数据...
return bookList;
}
}
②设置对静态资源得访问放行
@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.addResourceHand1er("/p1ugins/**"). addResourceLocations("/plugins/");
}
}
③前端页面通过异步提交访问后台控制器
//添加
saveBook () {
axios.post("/books",this.formData).then((res)=>{
});
},
//主页列表查询
getAll() {
axios.get("/books").then((res)=>{
this.datalist = res.data;
});
},
案例:基于RESTful页面数据交互
●先做后台功能,开发接口并调通接口
●再做页面异步调用,确认功能可以正常访问
●最后完成页面数据展示
●补充:放行静态资源访问