CN110413269A - 接口编码方法、服务器及计算机可读存储介质 - Google Patents
接口编码方法、服务器及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110413269A CN110413269A CN201910525966.XA CN201910525966A CN110413269A CN 110413269 A CN110413269 A CN 110413269A CN 201910525966 A CN201910525966 A CN 201910525966A CN 110413269 A CN110413269 A CN 110413269A
- Authority
- CN
- China
- Prior art keywords
- interface
- section
- intercepted
- check
- note
- 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 221
- 238000003860 storage Methods 0.000 title claims abstract description 30
- 238000005516 engineering process Methods 0.000 claims abstract description 15
- 238000012795 verification Methods 0.000 claims description 18
- 241000208340 Araliaceae Species 0.000 claims description 5
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 5
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 5
- 235000008434 ginseng Nutrition 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 18
- 238000007639 printing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000005856 abnormality Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000001629 sign test Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种开发技术,揭露了一种接口编码方法,该方法包括:采用AOP技术创建spring切面,将每个接口对应的相同代码设置在所述切面中;当接收到交易请求后,在所述切面拦截所有接口需要执行的方法;针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果接口入参有效性校验或签名校验不通过,则直接返回错误数据;当接口入参有效性校验和签名校验均通过后,执行被拦截的方法;对被拦截的方法进行异常捕捉并返回报文。本发明还提供一种服务器及计算机可读存储介质。本发明提供的接口编码方法、服务器及计算机可读存储介质能够通过spring的切面技术,将每个接口控制器中所有相同的代码搬到切面中,增强程序员的编码效率,减少代码的冗余。
Description
技术领域
本发明涉及开发技术领域,尤其涉及一种接口编码方法、服务器及计算机可读存储介质。
背景技术
目前,很多系统项目是基于spring框架的工程,并且现在都是微服务以restfulAPI接口方式提供服务,而每个接口对应一个controller(控制器),每个controller都要处理接口入参有效性校验、调service方法、service方法返回数据封装正常返回报文、捕捉异常对异常处理成失败返回报文、打印接口请求和返回日志。这几个逻辑里只有调service方法是不同的,其他的代码是一模一样的。现有的编码方法是在每个controller中都要写所有代码,那么就造成了大量的冗余代码,而且程序员写起来也挺麻烦、费时的。
发明内容
有鉴于此,本发明提出一种接口编码方法、服务器及计算机可读存储介质,以解决如何减少接口代码冗余的问题。
首先,为实现上述目的,本发明提出一种接口编码方法,该方法包括步骤:
采用面向切面编程AOP技术创建spring切面,将每个接口对应的相同代码设置在所述切面中;
当接收到交易请求后,在所述切面拦截所有接口需要执行的方法;
针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果所述接口入参有效性校验或所述签名校验不通过,则直接返回错误数据;
当所述接口入参有效性校验和签名校验均通过后,执行被拦截的方法;及
对被拦截的方法进行异常捕捉并返回报文。
可选地,该方法在创建所述切面之前还包括步骤:
定义spring注解,针对需要被拦截的接口方法添加所述注解。
可选地,该方法在创建所述切面之后还包括步骤:
将所述切面的切点设置为所创建的所述注解,以使所述切面对添加有所述注解的方法进行拦截,而对未添加所述注解的方法不进行拦截,由相应的接口控制器自行处理。
可选地,所述接口入参有效性校验包括为每个接口的入参建立一个实体类,利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在所述切面中调用一个验证的方法对所有字段的不同注解做对应的校验;
所述签名校验包括针对交易请求方对调用接口上送的数据所做的签名进行验证,以确认所述交易没有被篡改。
可选地,所述执行被拦截的方法的步骤包括:
由所述切面主动调用被拦截的方法,包括在对应接口中执行调service方法。
此外,为实现上述目的,本发明还提供一种服务器,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的接口编码系统,所述接口编码系统被所述处理器执行时实现如下步骤:
采用面向切面编程AOP技术创建spring切面,将每个接口对应的相同代码设置在所述切面中;
当接收到交易请求后,在所述切面拦截所有接口需要执行的方法;
针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果所述接口入参有效性校验或所述签名校验不通过,则直接返回错误数据;
当所述接口入参有效性校验和签名校验均通过后,执行被拦截的方法;
及
对被拦截的方法进行异常捕捉并返回报文。
可选地,所述接口编码系统被所述处理器执行时还实现步骤:
在创建所述切面之前,定义spring注解,针对需要被拦截的接口方法添加所述注解;
在创建所述切面之后,将所述切面的切点设置为所创建的所述注解,以使所述切面对添加有所述注解的方法进行拦截,而对未添加所述注解的方法不进行拦截,由相应的接口控制器自行处理。
可选地,所述接口入参有效性校验包括为每个接口的入参建立一个实体类,利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在所述切面中调用一个验证的方法对所有字段的不同注解做对应的校验;
所述签名校验包括针对交易请求方对调用接口上送的数据所做的签名进行验证,以确认所述交易没有被篡改。
可选地,所述执行被拦截的方法的步骤包括:
由所述切面主动调用被拦截的方法,包括在对应接口中执行调service方法。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有接口编码系统,所述接口编码系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述的接口编码方法的步骤。
相较于现有技术,本发明所提出的接口编码方法、服务器及计算机可读存储介质,可以通过spring的切面技术,将每个接口controller中所有相同的代码搬到切面中,因此,签名校验、接口入参验证、日志打印、返回报文处理等代码只要写一次,后续所有的controller方法不用再重复写这些代码,大大的增强了程序员的编码效率,减少了代码的冗余。
附图说明
图1是本发明服务器一可选的硬件架构的示意图;
图2是本发明接口编码系统第一实施例的程序模块示意图;
图3是本发明接口编码系统第二实施例的程序模块示意图;
图4是本发明接口编码方法第一实施例的流程示意图;
图5是本发明接口编码方法第二实施例的流程示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
参阅图1所示,是本发明服务器2一可选的硬件架构的示意图。
本实施例中,所述服务器2可包括,但不仅限于,可通过系统总线相互通信连接存储器11、处理器12、网络接口13。需要指出的是,图1仅示出了具有组件11-13的服务器2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
其中,所述服务器2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,该服务器2可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述服务器2的内部存储单元,例如该服务器2的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述服务器2的外部存储设备,例如该服务器2上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述服务器2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器11通常用于存储安装于所述服务器2的操作系统和各类应用软件,例如接口编码系统200的程序代码等。此外,所述存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述服务器2的总体操作。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行所述的接口编码系统200等。
所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述服务器2与其他电子设备之间建立通信连接。
至此,己经详细介绍了本发明相关设备的硬件结构和功能。下面,将基于上述介绍提出本发明的各个实施例。
首先,本发明提出一种接口编码系统200。
参阅图2所示,是本发明接口编码系统200第一实施例的程序模块图。
本实施例中,所述接口编码系统200包括一系列的存储于存储器11上的计算机程序指令,当该计算机程序指令被处理器12执行时,可以实现本发明各实施例的接口编码操作。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,接口编码系统200可以被划分为一个或多个模块。例如,在图2中,所述接口编码系统200可以被分割成创建模块201、拦截模块202、校验模块203、执行模块204、反馈模块205。其中:
所述创建模块201,用于创建spring切面,将每个接口对应的相同代码设置在所述切面中。
具体地,针对所有spring框架的微服务接口,为了简化代码,可以添加切面来拦截每个controller接口的方法。在本实施例中,利用spring的AOP(Aspect OrientedProgramming,面向切面编程)技术,创建一个切面拦截所有的controller接口的方法,将每个controller中所有相同的代码搬到切面中,例如打印日志、接口入参有效性校验、签名校验、对service方法返回数据封装成接口返回报文、异常捕获并处理失败返回报文等。加上切面拦截处理后,所有的controller就只要做一件事:调service方法。
所述拦截模块202,用于当接收到交易请求后,在切面拦截所有的controller接口需要执行的方法。
具体地,当交易请求到服务端,交易的controller接口需要执行接口入参有效性校验、调service方法、对service方法返回数据封装正常返回报文、捕捉异常对异常处理成失败返回报文、打印接口请求和返回日志等流程。在该controller接口执行该交易的方法前会被切面拦截,先执行切面里的代码,然后再执行被拦截的方法(切面主动调用被拦截的方法,例如调service方法),也就是说controller接口中执行的方法是由切面控制调用的,最后由切面组装公共的返回报文进行返回。这样一来就把所有controller方法中相同的代码抽离出来了,简化了controller的代码冗余。
所述校验模块203,用于针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果接口入参有效性校验或签名校验不通过,则直接返回错误数据。
具体地,在执行所拦截的方法之前,首先进行接口入参有效性校验、签名校验。如果这两种校验有不通过的情况,则直接返回错误数据,不再继续执行被拦截的方法。
所述接口入参有效性校验是指每个接口都有入参,所以为每个接口的入参建立一个实体类,然后利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在切面中调用一个验证的方法就可以对所有字段的不同注解做对应的校验,这个验证的方法是各种验证注解做对应的逻辑判断。
另外,服务提供的接口为了安全必须要签名校验,例如md5验签。请求方对调用接口上送的数据做签名,服务方验证签名以确认交易没有被篡改,签名校验对所有的接口来说是公共处理的,不需要每个接口都写一遍,所以可以在切面中执行。
所述执行模块204,用于当接口入参有效性校验和签名校验均通过后,执行被拦截的方法。
具体地,当所述校验通过后,执行被拦截的方法的代码,进行相应的处理。在本实施例中,由切面主动调用被拦截的方法,例如调service方法,该方法在controller接口中执行。
所述反馈模块205,用于对被拦截的方法进行异常捕捉并返回报文。
具体地,在所述被拦截的方法执行过程中,所述切面对整个方法执行体进行异常捕捉,就是java中的try、catch,如果捕捉到异常,就将异常错误码转换成报文体返回给调用者,调用者根据返回的错误码来识别是什么错误。如果没有异常,那就是正常流程,将接口处理后的数据组装成报文体返回给调用者,调用者这个时候判断到的错误码是成功的,按成功逻辑处理。
本实施例提供的接口编码系统,可以通过spring的切面技术,将每个controller中所有相同的代码搬到切面中,因此,签名校验、接口入参验证、日志打印、返回报文处理等代码只要写一次,后续所有的controller方法不用再重复写这些代码,大大的增强了程序员的编码效率,减少了代码的冗余。
参阅图3所示,是本发明接口编码系统200第二实施例的程序模块图。本实施例中,所述的接口编码系统200除了包括第一实施例中的所述创建模块201、拦截模块202、校验模块203、执行模块204、反馈模块205之外,还包括添加模块206。
所述添加模块206,用于定义spring注解,针对需要被拦截的controller方法添加所述注解。
具体地,针对所有spring框架的微服务接口,为了简化代码,可以添加切面来拦截每个controller接口的方法。如果有需求,有的controller需要特殊处理的,不需要被切面拦截。因此,可以自定义一个spring注解,定义后可以在方法或者类上使用,将所述切面的切点设置为添加有该注解的方法,这样需要被拦截的方法添加该注解,而不需要被拦截的方法不添加该注解即可。
例如,所述注解具体定义为:
public@interface ValidateAndSign{}
通过@interface来定义,那么注解名就是ValidateAndSign。
使用的时候在某个方法上添加:@ValidateAndSign,则表示该方法需要被切面拦截。
所述创建模块201,还用于在创建spring切面后,将所述切面的切点设置为所创建的所述注解。
具体地,所述切面的切点设置为所述注解,也就是所述切面对添加有所述注解的方法进行拦截,而对未添加所述注解的方法不进行拦截,由相应的controller自行处理。
本实施例提供的接口编码系统,可以通过spring的切面技术,将每个controller中所有相同的代码搬到切面中,因此,签名校验、接口入参验证、日志打印、返回报文处理等代码只要写一次,后续所有的controller方法不用再重复写这些代码,大大的增强了程序员的编码效率,减少了代码的冗余。另外,切面可以根据每个controller的方法是否添加注解,判断该方法是否需要被拦截,以备有的controller需要特殊处理。
此外,本发明还提出一种接口编码方法。
参阅图4所示,是本发明接口编码方法第一实施例的流程示意图。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。
该方法包括以下步骤:
步骤S400,创建spring切面,将每个接口对应的相同代码设置在所述切面中。
具体地,针对所有spring框架的微服务接口,为了简化代码,可以添加切面来拦截每个controller接口的方法。在本实施例中,利用spring的AOP技术,创建一个切面拦截所有的controller接口的方法,将每个controller中所有相同的代码搬到切面中,例如打印日志、接口入参有效性校验、签名校验、对service方法返回数据封装成接口返回报文、异常捕获并处理失败返回报文等。加上切面拦截处理后,所有的controller就只要做一件事:调service方法。
步骤S402,当接收到交易请求后,在切面拦截所有的controller接口需要执行的方法。
具体地,当交易请求到服务端,交易的controller接口需要执行接口入参有效性校验、调service方法、对service方法返回数据封装正常返回报文、捕捉异常对异常处理成失败返回报文、打印接口请求和返回日志等流程。在该controller接口执行该交易的方法前会被切面拦截,先执行切面里的代码,然后再执行被拦截的方法(切面主动调用被拦截的方法,例如调service方法),也就是说controller接口中执行的方法是由切面控制调用的,最后由切面组装公共的返回报文进行返回。这样一来就把所有controller方法中相同的代码抽离出来了,简化了controller的代码冗余。
步骤S404,针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果接口入参有效性校验或签名校验不通过,则直接返回错误数据。
具体地,在执行所拦截的方法之前,首先进行接口入参有效性校验、签名校验。如果这两种校验有不通过的情况,则直接返回错误数据,不再继续执行被拦截的方法。
所述接口入参有效性校验是指每个接口都有入参,所以为每个接口的入参建立一个实体类,然后利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在切面中调用一个验证的方法就可以对所有字段的不同注解做对应的校验,这个验证的方法是各种验证注解做对应的逻辑判断。
另外,服务提供的接口为了安全必须要签名校验,例如md5验签。请求方对调用接口上送的数据做签名,服务方验证签名以确认交易没有被篡改,签名校验对所有的接口来说是公共处理的,不需要每个接口都写一遍,所以可以在切面中执行。
步骤S406,当接口入参有效性校验和签名校验均通过后,执行被拦截的方法。
具体地,当所述校验通过后,执行被拦截的方法的代码,进行相应的处理。在本实施例中,由切面主动调用被拦截的方法,例如调service方法,该方法在controller接口中执行。
步骤S408,对被拦截的方法进行异常捕捉并返回报文。
具体地,在所述被拦截的方法执行过程中,所述切面对整个方法执行体进行异常捕捉,就是java中的try、catch,如果捕捉到异常,就将异常错误码转换成报文体返回给调用者,调用者根据返回的错误码来识别是什么错误。如果没有异常,那就是正常流程,将接口处理后的数据组装成报文体返回给调用者,调用者这个时候判断到的错误码是成功的,按成功逻辑处理。
本实施例提供的接口编码方法,可以通过spring的切面技术,将每个controller中所有相同的代码搬到切面中,因此,签名校验、接口入参验证、日志打印、返回报文处理等代码只要写一次,后续所有的controller方法不用再重复写这些代码,大大的增强了程序员的编码效率,减少了代码的冗余。
如图5所示,是本发明接口编码方法的第二实施例的流程示意图。在本实施例中,根据不同的需求,图5所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。
该方法包括以下步骤:
步骤S500,定义spring注解,针对需要被拦截的controller方法添加所述注解。
具体地,针对所有spring框架的微服务接口,为了简化代码,可以添加切面来拦截每个controller的方法。如果有需求,有的controller需要特殊处理的,不需要被切面拦截。因此,可以自定义一个spring注解,定义后可以在方法或者类上使用,将所述切面的切点设置为添加有该注解的方法,这样需要被拦截的方法添加该注解,而不需要被拦截的方法不添加该注解即可。
例如,所述注解具体定义为:
public@interface ValidateAndSign{}
通过@interface来定义,那么注解名就是ValidateAndSign。
使用的时候在某个方法上添加:@ValidateAndSign,则表示该方法需要被切面拦截。
步骤S502,创建spring切面,将所述切面的切点设置为所创建的所述注解。
具体地,利用spring的AOP技术,创建一个切面拦截所有的controller接口的方法,将每个controller中所有相同的代码搬到切面中,例如打印日志、接口入参有效性校验、签名校验、对service方法返回数据封装成接口返回报文、异常捕获并处理失败返回报文等。加上切面拦截处理后,所有的controller就只要做一件事:调service方法。
所述切面的切点设置为所述注解,也就是所述切面对添加有所述注解的方法进行拦截,而对未添加所述注解的方法不进行拦截,由相应的controller自行处理。
步骤S504,当接收到交易请求后,在切面拦截所有的controller接口需要执行的方法。
具体地,当交易请求到服务端,交易的controller接口需要执行接口入参有效性校验、调service方法、对service方法返回数据封装正常返回报文、捕捉异常对异常处理成失败返回报文、打印接口请求和返回日志等流程。在该controller接口执行该交易的方法前会被切面拦截(添加有所述注解的方法),先执行切面里的代码,然后再执行被拦截的方法(切面主动调用被拦截的方法,例如调service方法),也就是说controller接口中执行的方法是由切面控制调用的,最后由切面组装公共的返回报文进行返回。这样一来就把所有controller方法中相同的代码抽离出来了,简化了controller的代码冗余。
步骤S506,针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果接口入参有效性校验或签名校验不通过,则直接返回错误数据。
具体地,在执行所拦截的方法之前,首先进行接口入参有效性校验、签名校验。如果这两种校验有不通过的情况,则直接返回错误数据,不再继续执行被拦截的方法。
所述接口入参有效性校验是指每个接口都有入参,所以为每个接口的入参建立一个实体类,然后利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在切面中调用一个验证的方法就可以对所有字段的不同注解做对应的校验,这个验证的方法是各种验证注解做对应的逻辑判断。
另外,服务提供的接口为了安全必须要签名校验,例如md5验签。请求方对调用接口上送的数据做签名,服务方验证签名以确认交易没有被篡改,签名校验对所有的接口来说是公共处理的,不需要每个接口都写一遍,所以可以在切面中执行。
步骤S508,当接口入参有效性校验和签名校验均通过后,执行被拦截的方法。
具体地,当所述校验通过后,执行被拦截的方法的代码,进行相应的处理。在本实施例中,由切面主动调用被拦截的方法,例如调service方法,该方法在controller接口中执行。
步骤S510,对被拦截的方法进行异常捕捉并返回报文。
具体地,在所述被拦截的方法执行过程中,所述切面对整个方法执行体进行异常捕捉,就是java中的try、catch,如果捕捉到异常,就将异常错误码转换成报文体返回给调用者,调用者根据返回的错误码来识别是什么错误。如果没有异常,那就是正常流程,将接口处理后的数据组装成报文体返回给调用者,调用者这个时候判断到的错误码是成功的,按成功逻辑处理。
本实施例提供的接口编码方法,可以通过spring的切面技术,将每个controller中所有相同的代码搬到切面中,因此,签名校验、接口入参验证、日志打印、返回报文处理等代码只要写一次,后续所有的controller方法不用再重复写这些代码,大大的增强了程序员的编码效率,减少了代码的冗余。另外,切面可以根据每个controller的方法是否添加注解,判断该方法是否需要被拦截,以备有的controller需要特殊处理。
本发明还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有接口编码程序,所述接口编码程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的接口编码方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种接口编码方法,其特征在于,所述方法包括步骤:
采用面向切面编程AOP技术创建spring切面,将每个接口对应的相同代码设置在所述切面中;
当接收到交易请求后,在所述切面拦截所有接口需要执行的方法;
针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果所述接口入参有效性校验或所述签名校验不通过,则直接返回错误数据;
当所述接口入参有效性校验和签名校验均通过后,执行被拦截的方法;及
对被拦截的方法进行异常捕捉并返回报文。
2.如权利要求1所述的接口编码方法,其特征在于,该方法在创建所述切面之前还包括步骤:
定义spring注解,针对需要被拦截的接口方法添加所述注解。
3.如权利要求2所述的接口编码方法,其特征在于,该方法在创建所述切面之后还包括步骤:
将所述切面的切点设置为所创建的所述注解,以使所述切面对添加有所述注解的方法进行拦截,而对未添加所述注解的方法不进行拦截,由相应的接口控制器自行处理。
4.如权利要求1-3任一项所述的接口编码方法,其特征在于:
所述接口入参有效性校验包括为每个接口的入参建立一个实体类,利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在所述切面中调用一个验证的方法对所有字段的不同注解做对应的校验;
所述签名校验包括针对交易请求方对调用接口上送的数据所做的签名进行验证,以确认所述交易没有被篡改。
5.如权利要求1-3任一项所述的接口编码方法,其特征在于,所述执行被拦截的方法的步骤包括:
由所述切面主动调用被拦截的方法,包括在对应接口中执行调service方法。
6.一种服务器,其特征在于,所述服务器包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的接口编码系统,所述接口编码系统被所述处理器执行时实现如下步骤:
采用面向切面编程AOP技术创建spring切面,将每个接口对应的相同代码设置在所述切面中;
当接收到交易请求后,在所述切面拦截所有接口需要执行的方法;
针对所拦截的方法对应的接口进行接口入参有效性校验和签名校验,如果所述接口入参有效性校验或所述签名校验不通过,则直接返回错误数据;
当所述接口入参有效性校验和签名校验均通过后,执行被拦截的方法;及
对被拦截的方法进行异常捕捉并返回报文。
7.如权利要求6所述的服务器,其特征在于,所述接口编码系统被所述处理器执行时还实现步骤:
在创建所述切面之前,定义spring注解,针对需要被拦截的接口方法添加所述注解;
在创建所述切面之后,将所述切面的切点设置为所创建的所述注解,以使所述切面对添加有所述注解的方法进行拦截,而对未添加所述注解的方法不进行拦截,由相应的接口控制器自行处理。
8.如权利要求6或7所述的服务器,其特征在于:
所述接口入参有效性校验包括为每个接口的入参建立一个实体类,利用spring的验证字段数据注解,给每个字段加上需要检验的注解,然后在所述切面中调用一个验证的方法对所有字段的不同注解做对应的校验;
所述签名校验包括针对交易请求方对调用接口上送的数据所做的签名进行验证,以确认所述交易没有被篡改。
9.如权利要求6或7所述的服务器,其特征在于,所述执行被拦截的方法的步骤包括:
由所述切面主动调用被拦截的方法,包括在对应接口中执行调service方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有接口编码系统,所述接口编码系统可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-5中任一项所述的接口编码方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910525966.XA CN110413269A (zh) | 2019-06-18 | 2019-06-18 | 接口编码方法、服务器及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910525966.XA CN110413269A (zh) | 2019-06-18 | 2019-06-18 | 接口编码方法、服务器及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110413269A true CN110413269A (zh) | 2019-11-05 |
Family
ID=68359316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910525966.XA Pending CN110413269A (zh) | 2019-06-18 | 2019-06-18 | 接口编码方法、服务器及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413269A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191246A (zh) * | 2019-12-19 | 2020-05-22 | 杭州安恒信息技术股份有限公司 | 一种基于Spring注解的安全开发校验方法 |
CN111935103A (zh) * | 2020-07-22 | 2020-11-13 | 河南信大网御科技有限公司 | 执行体服务功能递归拟态化系统及方法 |
CN112181804A (zh) * | 2020-08-31 | 2021-01-05 | 五八到家有限公司 | 一种参数校验方法、设备以及存储介质 |
CN112241370A (zh) * | 2020-10-21 | 2021-01-19 | 网易(杭州)网络有限公司 | 一种api接口类的校验方法、系统及装置 |
CN112346778A (zh) * | 2020-10-28 | 2021-02-09 | 常州微亿智造科技有限公司 | 一种Java程序编译时自动生成字节码的优化方法 |
CN112817566A (zh) * | 2021-01-22 | 2021-05-18 | 平安普惠企业管理有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN113010401A (zh) * | 2019-12-19 | 2021-06-22 | 广州凡科互联网科技股份有限公司 | 一种基于ssm系统的异常捕获处理方法 |
CN113595978A (zh) * | 2021-06-23 | 2021-11-02 | 北京国电通网络技术有限公司 | 基于微服务架构的数据贯通方法及相关设备 |
CN113722733A (zh) * | 2021-08-27 | 2021-11-30 | 北京航天云路有限公司 | 一种基于Java注解实现的数据访问权限控制方法 |
CN113778725A (zh) * | 2020-06-03 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据校验方法和装置 |
CN114205156A (zh) * | 2021-12-13 | 2022-03-18 | 中国农业银行股份有限公司 | 面向切面技术的报文检测方法、装置、电子设备及介质 |
CN114995983A (zh) * | 2022-07-11 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 数据流转链路的获取方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246514A (zh) * | 2013-05-07 | 2013-08-14 | 汉柏科技有限公司 | 基于云计算实现例外框架的方法 |
WO2017041657A1 (zh) * | 2015-09-09 | 2017-03-16 | 阿里巴巴集团控股有限公司 | 一种应用接口管理方法和装置 |
CN107204977A (zh) * | 2017-05-23 | 2017-09-26 | 努比亚技术有限公司 | 接口安全校验方法及装置、计算机可读存储介质 |
CN107241308A (zh) * | 2017-04-27 | 2017-10-10 | 努比亚技术有限公司 | 一种实现安全校验的方法、装置及移动终端 |
CN108415834A (zh) * | 2018-02-12 | 2018-08-17 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN108880908A (zh) * | 2018-07-09 | 2018-11-23 | 上海盛付通电子支付服务有限公司 | 一种监控方法及其服务器 |
-
2019
- 2019-06-18 CN CN201910525966.XA patent/CN110413269A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246514A (zh) * | 2013-05-07 | 2013-08-14 | 汉柏科技有限公司 | 基于云计算实现例外框架的方法 |
WO2017041657A1 (zh) * | 2015-09-09 | 2017-03-16 | 阿里巴巴集团控股有限公司 | 一种应用接口管理方法和装置 |
CN107241308A (zh) * | 2017-04-27 | 2017-10-10 | 努比亚技术有限公司 | 一种实现安全校验的方法、装置及移动终端 |
CN107204977A (zh) * | 2017-05-23 | 2017-09-26 | 努比亚技术有限公司 | 接口安全校验方法及装置、计算机可读存储介质 |
CN108415834A (zh) * | 2018-02-12 | 2018-08-17 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN108880908A (zh) * | 2018-07-09 | 2018-11-23 | 上海盛付通电子支付服务有限公司 | 一种监控方法及其服务器 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010401A (zh) * | 2019-12-19 | 2021-06-22 | 广州凡科互联网科技股份有限公司 | 一种基于ssm系统的异常捕获处理方法 |
CN111191246A (zh) * | 2019-12-19 | 2020-05-22 | 杭州安恒信息技术股份有限公司 | 一种基于Spring注解的安全开发校验方法 |
CN113778725A (zh) * | 2020-06-03 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据校验方法和装置 |
CN111935103A (zh) * | 2020-07-22 | 2020-11-13 | 河南信大网御科技有限公司 | 执行体服务功能递归拟态化系统及方法 |
CN112181804A (zh) * | 2020-08-31 | 2021-01-05 | 五八到家有限公司 | 一种参数校验方法、设备以及存储介质 |
CN112181804B (zh) * | 2020-08-31 | 2023-09-08 | 五八到家有限公司 | 一种参数校验方法、设备以及存储介质 |
CN112241370A (zh) * | 2020-10-21 | 2021-01-19 | 网易(杭州)网络有限公司 | 一种api接口类的校验方法、系统及装置 |
CN112241370B (zh) * | 2020-10-21 | 2023-06-16 | 网易(杭州)网络有限公司 | 一种api接口类的校验方法、系统及装置 |
CN112346778A (zh) * | 2020-10-28 | 2021-02-09 | 常州微亿智造科技有限公司 | 一种Java程序编译时自动生成字节码的优化方法 |
CN112346778B (zh) * | 2020-10-28 | 2022-02-08 | 常州微亿智造科技有限公司 | 一种Java程序编译时自动生成字节码的优化方法 |
CN112817566A (zh) * | 2021-01-22 | 2021-05-18 | 平安普惠企业管理有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN112817566B (zh) * | 2021-01-22 | 2023-12-15 | 深圳优优互联网络科技有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN113595978A (zh) * | 2021-06-23 | 2021-11-02 | 北京国电通网络技术有限公司 | 基于微服务架构的数据贯通方法及相关设备 |
CN113595978B (zh) * | 2021-06-23 | 2023-08-01 | 北京国电通网络技术有限公司 | 基于微服务架构的数据贯通方法及相关设备 |
CN113722733A (zh) * | 2021-08-27 | 2021-11-30 | 北京航天云路有限公司 | 一种基于Java注解实现的数据访问权限控制方法 |
CN114205156A (zh) * | 2021-12-13 | 2022-03-18 | 中国农业银行股份有限公司 | 面向切面技术的报文检测方法、装置、电子设备及介质 |
CN114995983A (zh) * | 2022-07-11 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 数据流转链路的获取方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413269A (zh) | 接口编码方法、服务器及计算机可读存储介质 | |
CN108491475A (zh) | 数据快速批量导入方法、电子装置及计算机可读存储介质 | |
US20030216927A1 (en) | System and method for automated safe reprogramming of software radios | |
CN111988337B (zh) | 权限管理方法及系统 | |
CN111290742A (zh) | 参数验证方法、装置、电子设备及可读存储介质 | |
CN108470004A (zh) | 测试脚本生成方法、测试方法、装置、设备及存储介质 | |
CN109800149A (zh) | 应用界面测试用例生成方法及服务器 | |
CN110135798A (zh) | 佣金计算方法、平台、计算机设备及计算机可读存储介质 | |
CN109447384A (zh) | 风控系统的验证方法、装置、设备及存储介质 | |
CN110162344A (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN111813418A (zh) | 分布式链路跟踪方法、装置、计算机设备及存储介质 | |
CN111738853A (zh) | 一种基于区块链分布式系统的交易优化方法及装置 | |
CN111722946A (zh) | 分布式事务处理方法、装置、计算机设备及可读存储介质 | |
CN115455485A (zh) | 数据库访问方法、装置、客户端及存储介质 | |
CN113112270B (zh) | 基于区块链的数据组织方法 | |
CN107872451A (zh) | 用户身份验证方法及身份验证装置 | |
CN114968822A (zh) | 接口测试方法、装置、计算机设备及存储介质 | |
CN115018569A (zh) | 基于区块链的发票开具方法、发票报销方法、装置和设备 | |
CN114710297A (zh) | 基于聚合签名的区块链存证方法、装置、设备及存储介质 | |
CN110580172B (zh) | 配置规则的验证方法及装置、存储介质、电子装置 | |
CN113360172A (zh) | 应用部署方法、装置、计算机设备及存储介质 | |
CN114429408A (zh) | 智能变电站配置文件的校核方法、装置、设备和系统 | |
CN109828884A (zh) | 加挂服务数据处理方法、系统、计算机设备及存储介质 | |
CN108200060A (zh) | 基于web子系统的单点登录验证方法、服务器及存储介质 | |
CN109828752A (zh) | 项目代码自动生成方法、装置、计算机设备及存储介质 |
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 |