SpringSecurity 框架学习 3

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 类中显示

原文地址:https://www.cnblogs.com/412013cl/p/14049525.html