1.增删改查
以前都是基于用户的行为的url
/user/query?name=tom get
/user/getInfo?id=1 get
/user/create?name=tom post
/user/update?id=1&name=rose post
/user/delete?id=1 get
------restful api
/user?name=tom get
/user/1 get
/user post 创建
/user/1 put 修改
/user/1 delete
2.特点与区别
1)用URL描述资源
2)使用http方法描述行为。使用HTTP状态码表示不同的结果
3)使用接送交互数据
2)restful只是一种风格,并不是一种强制的标准
3.@JsonView
作用:控制输入输出后的json
在对象上添加视图:
public interface WithoutAgeView {};
public interface WithAgeView extends WithoutAgeView {};
在属性上添加jsonview注解
@JsonView(WithoutAgeView .class)
public String getUsername() {
return this.username;
}
@JsonView(WithAgeView .class)
public String getPassword() {
return this.password;
}
controller:
@RequestMapping(value = "/user",method = RequestMethod.GET)
@JsonView(User.WithoutAgeView.class)
public List<User> QueryUsers(@RequestParam(name = "username",required = false) String name, UserCondition condition, @PageableDefault(size = 2,page = 3,sort = "age",direction = Sort.Direction.DESC)Pageable pageable){
System.out.println(pageable.getPageSize()+"..."+pageable.getPageNumber()+"..."+pageable.getSort());
System.out.println(condition);
List<User> users = new ArrayList<>();
System.out.println(name);
users.add(new User());
users.add(new User());
users.add(new User());
return users;
}
//可以使用正则表达式 限制使用的ID的;类型
@RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
@JsonView(User.WithAgeView.class)
public User QueryById(@PathVariable Integer id){
User user = new User();
user.setName("tom");
return user;
}
@JsonView 中的这个视图不仅可以用接口,也可以是一般的类,或者说只要有Class属性就能当成视图使用。
4. @Valid注解
首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min @NotBlank
其次在controller层的方法的要校验的参数上添加@Valid注解,并且需要传入BindingResult对象,用于获取校验失败情况下的反馈信息
@PostMapping
public User CreateUser(@Valid @RequestBody User user, BindingResult errors) {
if (errors.hasErrors()){
errors.getAllErrors().stream().forEach(error-> System.out.println(error.getDefaultMessage()));
}
// if(bindingResult.hasErrors()){
// System.out.println(bindingResult.getFieldError().getDefaultMessage());
// return null;
// }
return user;