SpringSecurity 框架学习 3(MVC 开发RESTfulAPI 常用注解)
MVC 开发RESTfulAPI 接口
传统模式:
传统的查询,修改,删除都是GET或者POST
参数以queryString 方式 a=1&b=2 等..
RESTfulAPI中:
用URL描述资源
用HTTP方法描述行为(GET查询详情/POST创建/PUT修改/DELETE删除),使用HTTP状态码来表示不同的结果.
参数JSON方式交互
RESTfulAPI 只是风格,不是强制标准
常用注解:
@RestController: 标记Controller提供RESTAPI
@RequestMapping(value = "/user", method = RequestMethod.GET) 标记http请求到具体方法
@PostMapping
@GetMapping
@RequestParam 参数映射
@PageableDefault(page = 2, size = 17, sort = "username,asc") 指定分页默认参数
@PathVariable : 映射路由参数/xx/${id}
@JsonView 根据指定的方式显示数据,自定义显示
使用接口声明多个视图

在属性的get方法上指定视图,只有添加的才会再返回的数据中

在Controller的方法上指定视图

@RequestBody 解析映射传入的参数JSON字符串
@Valid 校验属性合法性 , 需要和BindingResult 类配合使用
属性常用的验证注解..


自定义验证注解:

第一步创建注解类:
package com.imooc.validator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyConstraintValidator.class) // 具体执行逻辑的类
public @interface MyConstraint {
String message();
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
第二步创建具体实现类(验证逻辑)继承ConstraintValidator<注解类, 属性的类型Object>
package com.imooc.validator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.beans.factory.annotation.Autowired;
import com.imooc.service.HelloService;
/**
* 具体执行逻辑的类
* MyConstraint 标记的注解类
*/
public class MyConstraintValidator implements ConstraintValidator<MyConstraint, Object> {
@Autowired
private HelloService helloService;
@Override
public void initialize(MyConstraint constraintAnnotation) {
System.out.println("my validator init");
}
/**
* 具体的逻辑
* @param value
* @param context
* @return
*/
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
helloService.greeting("tom");
System.out.println(value);
return true;
}
}
第三步 在BindingResult 类中显示

浙公网安备 33010602011771号