CN112463506A - 一种基于AOP的RESTful API统一参数校验方法 - Google Patents
一种基于AOP的RESTful API统一参数校验方法 Download PDFInfo
- Publication number
- CN112463506A CN112463506A CN202011472610.3A CN202011472610A CN112463506A CN 112463506 A CN112463506 A CN 112463506A CN 202011472610 A CN202011472610 A CN 202011472610A CN 112463506 A CN112463506 A CN 112463506A
- Authority
- CN
- China
- Prior art keywords
- annotation
- parameter verification
- aop
- class
- tangent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000012795 verification Methods 0.000 title claims abstract description 39
- 239000008186 active pharmaceutical agent Substances 0.000 claims abstract description 17
- 230000014509 gene expression Effects 0.000 claims abstract description 9
- 238000005516 engineering process Methods 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims abstract description 3
- 238000010200 validation analysis Methods 0.000 claims abstract description 3
- 230000002708 enhancing effect Effects 0.000 claims description 4
- 235000010627 Phaseolus vulgaris Nutrition 0.000 claims description 3
- 244000046052 Phaseolus vulgaris Species 0.000 claims description 3
- 238000012986 modification Methods 0.000 abstract description 3
- 230000004048 modification Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000009941 weaving Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2247—Verification or detection of system hardware configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于AOP的RESTful API统一参数校验方法,属于参数校验技术领域,本发明使用AOP技术在接口数量大的情况下,对相似的RESTful API进行统一的参数验证,包括以下步骤:1.搭建Spring框架;2.在Spring框架中配置包扫描的路径、开启AOP功能;3.定义参数验证切面类,进行具体参数验证处理;4.使用表达式,自定义注解定义参数验证的覆盖范围。本发明的应用使得在接口数量大的情况下,可以对相似的RESTful API快速完成统一的参数验证,这种方式配置灵活,易于修改,并且能够让参数验证与业务代码相解耦,提高整个系统的可维护性。
Description
技术领域
本发明涉及参数校验技术,尤其涉及一种基于AOP的RESTful API统一参数校验方法。
背景技术
参数校验是软件程序开发中必不可少的一个环节步骤,在早期的程序开发中,参数校验工作需要在每个方法中嵌入验证的代码,虽然相同的参数验证代码可以抽取成方法,统一进行管理和修改。但是,这样的参数验证方法显然具有很强的侵入性,并且提高了代码的重复率,当参数验证代码需要新增、修改、删除时,需要手动进行插入、更新、删除相应的验证代码。在系统接口数量较多的时候,这种方式就更加不利于系统的维护。
发明内容
为了解决如何在接口数量大的情况下,对相似的RESTful API进行统一的参数验证的问题,本发明提供了一种基于AOP的RESTful API统一参数校验方法,针对不同接口提供不同的参数验证。
本发明的技术方案是:
一种基于AOP的RESTful API统一参数校验方法,使用AOP技术对相似的RESTfulAPI进行统一的参数验证,包括以下步骤:
1)搭建Spring框架,使用Spring框架搭建Web项目,编写RESTful API;
2)在Spring框架中配置包扫描的路径、开启AOP功能;
3)定义参数验证切面类,进行具体参数验证处理;
4)使用表达式,自定义注解定义参数验证的覆盖范围。
进一步的,
所述Spring框架包括Spring MVC、Spring Boot、Spring Cloud,
进一步的,
步骤2)中,在Spring框架中配置基本参数,使用配置类进行配置或者使用xml文件进行配置。
进一步的,
在步骤2)中配置的包扫描路径中新建切面类,在此切面类添加@Component注解,用来标注此类为一个Bean,在此类中定义一个切点方法,方法的参数返回值均为空,起到标记作用。
进一步的,
在切面类中定义增强方法,其中有5中增强方式:@Before,@After,@Around,@AfterReturning,@AfterThrowing,在入参的校验中在增强方法上加入@Before注解,这样的增强方法叫做前置增强方法。
在切面类中定义前置增强方法,添加@Before("**()")注解,括号中的参数为切点方法名,在前置增强方法中增强JoinPoint入参,通过joinPoint.getArgs()方法取得参数列表,然后根据业务需求,进行相应的参数处理。
进一步的,
在步骤3)中定义的切点方法上加@Pointcut("**")注解,其中**中加入相应的表达式,在符合所配置的表达式的方法中加入增强的方法内容,
或使用自定义注解的方式实现,定义一个方法注解,然后在切点方法上加上@Pointcut("@annotation(**)"),annotation后的内容为注解的名称,所有有自定义注解的方法上都会被AOP增强。
本发明的有益效果是
本发明的应用使得在接口数量大的情况下,可以对相似的RESTful API快速完成统一的参数验证,这种方式配置灵活,易于修改,并且能够让参数验证与业务代码相解耦,提高整个系统的可维护性。
附图说明
图1是本发明的工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种基于AOP的RESTful API统一参数校验方法,使用AOP技术在接口数量大的情况下,对相似的RESTful API进行统一的参数验证,包括以下步骤:
1.搭建Spring框架,包括但不限于Spring MVC、Spring Boot、Spring Cloud,使用Spring框架搭建Web项目,编写RESTful API。
2.在Spring框架中配置基本参数,可以使用配置类进行配置或者使用xml文件进行配置,需要配置包扫描的路径、开启AOP功能。
以Spring MVC项目xml配置方法为例:通过在xml中加入
<context:component-scan base-package="**.**.**"/>来配置包扫描路径,此项配置可以配置多个,要保证base-package中配置的路径中需要包含要进行参数验证的类和切面类要包含在内。通过加入<aop:aspectj-autoproxy/>来配置开启AOP。
3.定义参数验证切面类,在2中配置的包扫描路径中新建切面类,在此切面类添加@Component注解,用来标注此类为一个Bean,在此类中定义一个切点方法,方法的参数返回值均可为空,只起到标记作用。在切面类中可以定义增强方法,其中有5中增强方式。@Before,@After,@Around,@AfterReturning,@AfterThrowing,在入参的校验中一般在增强方法上加入@Before注解,这样的增强方法叫做前置增强方法。在切面类中定义前置增强方法,添加@Before("**()")注解,括号中的参数为切点方法名,在前置增强方法中增强JoinPoint入参,通过joinPoint.getArgs()方法取得参数列表,然后根据业务需求,进行相应的参数处理。
4.定义参数验证的覆盖范围,在3中定义的切点方法上需要加
@Pointcut("**")注解,其中**中可以加入相应的表达式,可以在符合所配置的表达式的方法中加入增强的方法内容,也可以使用自定义注解的方式实现,定义一个方法注解,然后在切点方法上加上@Pointcut("@annotation(**)"),annotation后的内容为注解的名称,所有有自定义注解的方法上都会被AOP增强。
技术用语:
AOP:Aspect Oriented Programming的缩写,意为面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
RESTful:Representational State Transfer的缩写,一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
切面(Aspect):由切点和增强组成,既包含了横切逻辑的定义。也包含了连接点的定义。
切点(Pointcut):用于定义通知应该切入到哪些连接点上。
织入(Weaving):将切面应用到目标对象从而创建一个新的代理对象的过程。这个过程能够发生在编译期、类装载期及执行期,当然不同的发生点有着不同的前提条件。譬如发生在编译期的话。就要求有一个支持这样的AOP实现的特殊编译器;发生在类装载期,就要求有一个支持AOP实现的特殊类装载器;仅仅有发生在执行期,则可直接通过Java语言的反射机制与动态代理机制来动态实现。
增强:织入到目标类连接点上的一段代码。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种基于AOP的RESTful API统一参数校验方法,其特征在于,
使用AOP技术对相似的RESTful API进行统一的参数验证,包括以下步骤:
1)搭建Spring框架,使用Spring框架搭建Web项目,编写RESTful API;
2)在Spring框架中配置包扫描的路径、开启AOP功能;
3)定义参数验证切面类,进行具体参数验证处理;
4)使用表达式,自定义注解定义参数验证的覆盖范围。
2.根据权利要求1所述的方法,其特征在于,
所述Spring框架包括Spring MVC、Spring Boot、Spring Cloud。
3.根据权利要求1所述的方法,其特征在于,
步骤2)中,在Spring框架中配置基本参数,使用配置类进行配置或者使用xml文件进行配置。
4.根据权利要求1所述的方法,其特征在于,
在步骤2)中配置的包扫描路径中新建切面类,在此切面类添加@Component注解,用来标注此类为一个Bean,在此类中定义一个切点方法,方法的参数返回值均为空,起到标记作用。
5.根据权利要求4所述的方法,其特征在于,
在切面类中定义增强方法,其中有5中增强方式:@Before,@After,@Around,@AfterReturning,@AfterThrowing,在入参的校验中在增强方法上加入@Before注解,这样的增强方法叫做前置增强方法。
6.根据权利要求5所述的方法,其特征在于,
在切面类中定义前置增强方法,添加@Before("**()")注解,括号中的参数为切点方法名,在前置增强方法中增强JoinPoint入参,通过joinPoint.getArgs() 方法取得参数列表,然后根据业务需求,进行相应的参数处理。
7.根据权利要求5所述的方法,其特征在于,
在步骤3)中定义的切点方法上加@Pointcut("**")注解,其中**中加入相应的表达式,在符合所配置的表达式的方法中加入增强的方法内容。
8.根据权利要求5所述的方法,其特征在于,
在步骤3)中定义的切点方法使用自定义注解的方式实现,定义一个方法注解,然后在切点方法上加上@Pointcut("@annotation(**)"),annotation后的内容为注解的名称,所有有自定义注解的方法上都会被AOP增强。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011472610.3A CN112463506A (zh) | 2020-12-15 | 2020-12-15 | 一种基于AOP的RESTful API统一参数校验方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011472610.3A CN112463506A (zh) | 2020-12-15 | 2020-12-15 | 一种基于AOP的RESTful API统一参数校验方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112463506A true CN112463506A (zh) | 2021-03-09 |
Family
ID=74804703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011472610.3A Pending CN112463506A (zh) | 2020-12-15 | 2020-12-15 | 一种基于AOP的RESTful API统一参数校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463506A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111378A (zh) * | 2021-04-14 | 2021-07-13 | 山东英信计算机技术有限公司 | 终端、存储介质、注解方法及系统、前置校验方法及系统 |
CN114995983A (zh) * | 2022-07-11 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 数据流转链路的获取方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415834A (zh) * | 2018-02-12 | 2018-08-17 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN110413442A (zh) * | 2019-07-08 | 2019-11-05 | 浙江数链科技有限公司 | 参数校验方法和装置 |
CN110765422A (zh) * | 2018-07-25 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 一种参数校验方法和装置 |
CN111191246A (zh) * | 2019-12-19 | 2020-05-22 | 杭州安恒信息技术股份有限公司 | 一种基于Spring注解的安全开发校验方法 |
-
2020
- 2020-12-15 CN CN202011472610.3A patent/CN112463506A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415834A (zh) * | 2018-02-12 | 2018-08-17 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN110765422A (zh) * | 2018-07-25 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 一种参数校验方法和装置 |
CN110413442A (zh) * | 2019-07-08 | 2019-11-05 | 浙江数链科技有限公司 | 参数校验方法和装置 |
CN111191246A (zh) * | 2019-12-19 | 2020-05-22 | 杭州安恒信息技术股份有限公司 | 一种基于Spring注解的安全开发校验方法 |
Non-Patent Citations (1)
Title |
---|
A-MANTIS: "Springboot使用@Valid和AOP做参数校验以及日志输出", 《GITHUB》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113111378A (zh) * | 2021-04-14 | 2021-07-13 | 山东英信计算机技术有限公司 | 终端、存储介质、注解方法及系统、前置校验方法及系统 |
CN113111378B (zh) * | 2021-04-14 | 2022-07-22 | 山东英信计算机技术有限公司 | 终端、存储介质、注解方法及系统、前置校验方法及系统 |
CN114995983A (zh) * | 2022-07-11 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 数据流转链路的获取方法和装置 |
CN114995983B (zh) * | 2022-07-11 | 2022-12-13 | 支付宝(杭州)信息技术有限公司 | 数据流转链路的获取方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106569794B (zh) | 应用程序开发装置 | |
CN112463506A (zh) | 一种基于AOP的RESTful API统一参数校验方法 | |
CN108170448B (zh) | 一种自动化高效进行软件更新版本发布的系统 | |
CN107967139B (zh) | 游戏的热更新方法及装置 | |
CN103309683B (zh) | 硬件设备的软件补丁嵌入方法及装置 | |
WO2012142798A1 (zh) | 一种应用程序加载的方法及装置 | |
CN105159732A (zh) | 在移动终端安装或更新应用程序的方法和移动终端 | |
CN105278972A (zh) | 一种通过动态安装包快速让用户成为好友的系统和方法 | |
CN113515278A (zh) | 低代码模型处理方法、系统、电子设备及存储介质 | |
KR20130037995A (ko) | 멀티테넌시를 지원하는 비즈니스 로직 설정방법 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN105260184B (zh) | 一种恢复镜像文件的调试方法及装置 | |
CN107729117A (zh) | 一种虚拟机生成方法及系统 | |
WO2024011994A1 (en) | Methods and systems for updating an algorithm package | |
CN113031957A (zh) | 应用程序的安装方法、客户端、终端、服务器及存储介质 | |
CN110888669B (zh) | 一种在ide上创建模板工程的方法及系统 | |
CN116755788A (zh) | 一种线上规则修改方法、装置、设备及存储介质 | |
CN112732265A (zh) | 一种数据处理方法和相关装置 | |
CN113795001B (zh) | 基于spi进行系统短信发送的方法及装置 | |
Zhen-hai et al. | Automatic updating method based on Maven | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
Le Goaer et al. | Android executable modeling: Beyond android programming | |
CN110457151B (zh) | 热修复方法、装置及可读存储介质 | |
CN108920219B (zh) | 一种基于开放平台的业务处理方法及装置 | |
US20210042105A1 (en) | System and method for implementing complex patching micro service automation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210309 |