07|参数验证:写个参数校验居然也会被训?
何辉
你好,我是何辉。今天我们探索 Dubbo 框架的第六道特色风味,参数验证。
说到参数校验,相信你一定是又爱又恨。在发送或接收请求的时候,必要的参数校验可以拦截非法请求,提升请求质量,这样一个简单的数值比对逻辑看起来很简单,但写的过程却很枯燥和乏味,一不留神就会导致一些必要性校验没考虑到。
现在你的同事小马就因为漏写了参数校验被老大训话了,来看他写的一段消费方调用提供方的代码:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了Dubbo框架中参数验证的重要性和实际应用。通过具体案例和代码示例,介绍了参数验证的必要性,以及消费方和提供方在参数验证方面存在的问题。文章提出了三种验证方案:简单验证、省事点的处理方式以及更高级的解决方案。通过分析Dubbo框架的源码,发现了现成的工具ValidationFilter,可以用于参数校验。同时,探讨了使用事件通知机制进行参数校验的可行性,并提出了自行实现一套校验机制的想法。总结了参数验证的应用场景,包括单值简单规则判断、降低无谓的脏请求、通用网关校验领域。整体而言,本文通过具体案例和代码示例,深入浅出地介绍了参数验证在软件开发中的重要性和实际应用,为读者提供了有益的技术参考。文章还通过Dubbo框架的事件通知机制解释了为何重试机制不会触发多次,为读者提供了更深入的技术理解。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Dubbo 源码剖析与实战》,新⼈⾸单¥59
《Dubbo 源码剖析与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- Lum看到这里 其实对invocation,filter为啥会执行invoke等代码逻辑还是不太清楚,先插个眼,看完后总结一下
作者回复: 你好,Lum:可以的,多看几眼,理解理解一下,说不定一下就通透了~
2023-02-28归属地:北京 - 星期八@DubboService(validation = "jvalidation") 用代码测试了一下,在提供者不生效 什么情况!@DubboReference(validation = "jvalidation") 客户端是生效的
作者回复: 你好,星期八:抱歉这么晚回复你,主要前段时间电脑拿去修理了,按照你的描述,我不确定是不是我上传的代码是否有问题,等一拿到电脑后,我立马试了下上传的工程代码是可以的。 我在想,你是不是在本地调试来调试去,本地缓存没清理干净造成的呀?我自己在工程里面试了下,提供方使用【@DubboService(validation = "jvalidation")】,然后在消费方使用【@DubboReference】,这样是可以试出来提供方生效的,你要不再试试看~
2023-02-22归属地:浙江2 - Six Days思考题:Spring 的切面中完成对参数的统一验证? 根据本文中作者着重梳理通用验证思路,可以在项目中自定义注解定义校验参数的标准,可通过自定义注解标记AOP拦截的切入点,识别拦截点之后,可在方法调用前进行自定义的参数校验逻辑;在项目内可通过自定义注解实现参数的统一验证,有利于代码的维护
作者回复: 你好,Six Days:你理解的非常透彻,有了思路后只不过就是换了一个地方(Spring)进行参数验证而已,点赞~
2023-01-29归属地:广东2
收起评论