zoukankan      html  css  js  c++  java
  • 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 类中显示

  • 相关阅读:
    最强JAVA核心技术群
    脚本加载整个文件夹的jar到环境变量
    TTS 中文转制 google
    vue+webpack+sass
    springboot入门程序
    vue+ui
    正则表达式
    vue全家桶router、vuex、axios
    vue基础
    springboot获取自定义配置的值、获取类型安全的自定义配置的值和profile配置
  • 原文地址:https://www.cnblogs.com/412013cl/p/14049525.html
Copyright © 2011-2022 走看看