当前位置: 首页 > news >正文

app加网站开发黄页88网

app加网站开发,黄页88网,贵安建设厅网站,海淀网站建设公司1、业务场景 在SpringBoot项目中,针对接收的参数信息,根据需求要进行以下校验: 校验客户的apikey是否合法;校验请求的ip地址是否是白名单;校验短信的签名;校验短信的模板;校验手机号的格式合法…

1、业务场景

在SpringBoot项目中,针对接收的参数信息,根据需求要进行以下校验:

  • 校验客户的apikey是否合法;
  • 校验请求的ip地址是否是白名单;
  • 校验短信的签名;
  • 校验短信的模板;
  • 校验手机号的格式合法性;
  • 校验客户剩余的金额是否充足。

2、实现分析

对于接口需要校验的参数和信息,为了保证校验的方式做到动态可插拔,而且有利于后期的扩展,参考了Mybatis二级缓存的源码,采用策略模式+责任链模式的套路。实现的大致流程是向上声明一个接口,提供校验方法,然后后编写多个校验的实现类,在执行校验时,会拿到所有的校验接口实现类,然后以责任链的形式一个个校验执行。而且,配合Nacos提供的配置动态刷新,指定校验链执行的内容,需要改变时,只需要修改Nacos的配置参数。

3、代码编写

下面是整个校验链路的代码骨架,不涉及校验条件的具体实现细节。

1. 校验的父接口
/*** 做策略模式的父接口*/
public interface CheckFilter {/*** 校验方法* @param obj*/void check(Object obj);}
2. 准备校验的实现类
/*** 校验客户的apikey是否合法*/
@Service(value = "apikey")
@Slf4j
public class ApiKeyCheckFilter implements CheckFilter {@Overridepublic void check(Object obj) {log.info("【接口模块-校验apikey】");}
}/*** 校验请求的ip地址是否是白名单*/
@Service(value = "ip")
@Slf4j
public class IPCheckFilter implements CheckFilter {@Overridepublic void check(Object obj) {log.info("【接口模块-校验ip】");}
}/*** 校验短信的签名*/
@Service(value = "sign")
@Slf4j
public class SignCheckFilter implements CheckFilter {@Overridepublic void check(Object obj) {log.info("【接口模块-校验签名】");}
}/*** 校验短信的模板*/
@Service(value = "template")
@Slf4j
public class TemplateCheckFilter implements CheckFilter {@Overridepublic void check(Object obj) {log.info("【接口模块-校验模板】");}
}/*** 校验手机号的格式合法性*/
@Service(value = "mobile")
@Slf4j
public class MobileCheckFilter implements CheckFilter {@Overridepublic void check(Object obj) {log.info("【接口模块-校验手机号】");}
}/*** 校验客户剩余的金额是否充足*/
@Service(value = "fee")
@Slf4j
public class FeeCheckFilter implements CheckFilter {@Overridepublic void check(Object obj) {log.info("【接口模块-校验客户余额】");}
}
3. 准备上下文对象,拿到所有的校验接口实现类
/*** 策略模式的上下文对象*/
@Component
@RefreshScope
public class CheckFilterContext {// Spring的IOC会将对象全部都放到Map集合中// 基于4.x中Spring提供的反省注解,基于Map只拿到需要的类型对象即可@Autowiredprivate Map<String,CheckFilter> checkFiltersMap;// 基于Nacos获取到执行的顺序和需要执行的校验对象@Value("${filters:apikey,ip,sign,template}")private String filters;/*** 当前check方法用于管理校验链的顺序*/public void check(Object obj){//1. 将获取到filters基于,做切分String[] filterArray = filters.split(",");//2. 遍历数组即可for (String filter : filterArray) {CheckFilter checkFilter = checkFiltersMap.get(filter);checkFilter.check(obj);}}
}
4. Nacos配置校验执行顺序
# 校验策略的执行内容和顺序 apikey,ip,sign,template,mobile,fee
filters: apikey,ip,sign,template,mobile,fee
5. 上下文对象的使用
@RestController
public class CheckController{@Autowiredprivate CheckFilterContext checkFilterContext;/*** 测试使用 */@PostMappingpublic void check(Object obj){checkFilterContext.check(obj);}
}
http://www.yidumall.com/news/38475.html

相关文章:

  • mobi网站建设百度店铺免费入驻
  • 一个网站如何做推广方案万能浏览器
  • 石家庄网站app开发实时热榜
  • 电商网站设计平台分析网站推广和优化的原因
  • 网站 代理 备案 费用吗2023知名品牌营销案例100例
  • 简述网站开发的基本流程百度推广运营
  • 加强政府门户网站建设方案个人网站建站教程
  • 网站代码怎么优化整站seo排名费用价格
  • 如何做网站直播入口企业整站推广
  • 做视频网站要多少钱推广app网站
  • 建站平台的服务产品分析合肥seo按天收费
  • seo在哪学seo优化系统
  • 大型网站建设兴田德润赞扬百度搜索引擎优化怎么做
  • 聊天网站开发网络热词2023流行语及解释
  • 微信公众号运营助手seo优化前景
  • 山东省工程建设招标信息网站贵阳百度快照优化排名
  • 全屋定制十大品牌排行榜前十名百度seo建议
  • 做网络推广网站有哪些全网营销国际系统
  • 哪个网站做海外代购怎么做百度关键词排名
  • 株洲网上购房节seo问答
  • 自己做的网站慢是什么原因百度竞价推广课程
  • 驻马店企业做网站竞价代运营外包公司
  • 常州做网站找哪家好百度指数排名热搜榜
  • 有没有什么东西可以做网站2023年免费进入b站
  • 云南人seo优化包括哪些
  • 网站开发技术应用领域百度快照投诉
  • wordpress网站集群个人网站怎么做
  • 免费vip影视网站怎么做的福州seo代理商
  • 湖北住房和城乡建设厅网站电脑优化是什么意思
  • 厦门小羽佳网站建设开发企业查询信息平台