行是知之始,知是行之成。
今天算是我感染新冠病毒的第八天(我一直以为第七天,看来是脑子烧坏了)了,病程接近尾声,主要症状如发烧、咳嗽、鼻塞都好的差不多了,我又站起来了!
本文主要介绍一种通过实现自定义注解,实现一种比较通用的接口防刷方式
前言
1.基本准备
- jdk 8
- redis
- springboot 2.7.6
2.基本思路
主要就是借助 redis 来实现接口的防刷。
基本逻辑:定义一个切面,通过@Prevent注解作为切入点、在该切面的前置通知获取该方法的所有入参;
同时,通过@Prevent注解的convert属性,自定义redis的部分key值,并将其Base64编码+完整方法名作为redis的key,
自定义redis的部分key值作为reids的value,@Prevent的time作为redis的expire,存入redis;
每次进来这个切面根据自定义入参Base64编码+完整方法名判断redis值是否存在,存在则拦截防刷,不存在则允许调用;
使用方法步骤:
- 添加默认分割线:高度为2px,颜色为灰色
- 添加自定义分割线:可自定义分割线drawable
- 添加自定义分割线:可自定义分割线高度和颜色
- 万能分割线登场
最近遇到一个问题。具体内容是使用Volley联网请求一段json数据,用Postman工具获取返回数据也是正确的,在别人的电脑上也是正常的,返回数据header中编码格式也是utf-8.那么问题就出在volly这个工具类上了。
经过排查,发现问题确实出在volley的一个工具类上 。