CN110381135B - 接口创建方法、服务请求方法、装置、计算机设备和介质 - Google Patents

接口创建方法、服务请求方法、装置、计算机设备和介质 Download PDF

Info

Publication number
CN110381135B
CN110381135B CN201910652082.0A CN201910652082A CN110381135B CN 110381135 B CN110381135 B CN 110381135B CN 201910652082 A CN201910652082 A CN 201910652082A CN 110381135 B CN110381135 B CN 110381135B
Authority
CN
China
Prior art keywords
interface
request
service
class
annotation
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.)
Active
Application number
CN201910652082.0A
Other languages
English (en)
Other versions
CN110381135A (zh
Inventor
柯登科
段光磊
王平
赫振军
周正
张大虎
王杨
徐婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201910652082.0A priority Critical patent/CN110381135B/zh
Publication of CN110381135A publication Critical patent/CN110381135A/zh
Application granted granted Critical
Publication of CN110381135B publication Critical patent/CN110381135B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种接口创建方法、服务请求方法、装置、计算机设备和存储介质,接口创建方法包括:获取用于访问预设服务的接口类;根据接口类,生成对应的接口实现类,并使接口实现类继承接口类中的注解;对注解进行解析,得到访问预设服务所需的请求参数;根据请求参数,生成对应的方法体,并将方法体插入接口实现类中;将包含方法体的接口实现类注入到应用场景的代码中。本申请不需要在业务层中增加逻辑处理的代码,不会增加业务层的代码量。而且,由于不是通过feign实现,因此不仅可以发送http访问请求,还可以发送其他格式的访问请求,增加访问请求的多样性。

Description

接口创建方法、服务请求方法、装置、计算机设备和介质
技术领域
本申请涉及服务请求技术领域,尤其涉及一种接口创建方法、服务请求方法、装置、计算机设备和存储介质。
背景技术
业务方通过其用于访问服务的接口来访问公共服务,针对一些简单的服务,业务方需要发出的http访问请求可以通过Feign实现。Feign是一个声明式的网络服务客户端,它的目的是让网络服务的调用更加简单,Feign提供了http访问请求的模板,通过编写简单的接口和插入注解,就可以定义好http访问请求中的各个参数、格式、地址等信息。但是Feign只适合于简单的直接访问,不能对参数进行一些处理,这样得到的http访问请求不能满足一些复杂服务的要求。例如,访问请求中有三个参数,其中第三个参数是由前两个参数进行签名加密计算后得到,而Feign提供的请求模板不能做这种计算工作,因此如果用Feign创建http访问请求,就得把这部分计算工作放在业务代码里,这样就会增加业务层的代码量。而且Feign只能发送http访问请求,不能实现其他方式的访问请求。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种接口创建方法、服务请求方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种接口创建方法,该方法包括:
获取用于访问预设服务的接口类;
根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;
对所述注解进行解析,得到访问预设服务所需的请求参数;
根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;
将包含所述方法体的接口实现类注入到应用场景的代码中。
第二方面,本申请提供了一种服务请求方法,该方法包括:
在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为上述任一接口创建方法中的接口实现类;
根据所述访问请求中的服务类型,调用对应的底层封装方法;
采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
第三方面,本申请提供了一种接口创建装置,该装置包括:
获取模块,用于获取用于访问预设服务的接口类;
第一生成模块,用于根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;
解析模块,用于对所述注解进行解析,得到访问预设服务所需的请求参数;
第二生成模块,用于根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;
注入模块,用于将包含所述方法体的接口实现类注入到应用场景的代码中。
第四方面,本申请提供一种服务请求装置,该装置包括:
第一调用模块,用于在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为上述接口创建装置中的接口实现类;
第二调用模块,用于根据所述访问请求中的服务类型,调用对应的底层封装方法;
封装处理模块,用于采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
第五方面,本申请提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时上述任一方法的步骤。
第六方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一方法的步骤。
本申请实施例提供的接口创建方法、服务请求方法、装置、计算机设备和存储介质,根据接口类生成接口实现类,并继承了接口类上的注解,然后依据注解中的各个请求参数生成方法体并插入到接口实现类中,并将包括方法体的接口实现类注入到应用场景中。其中,方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成访问请求。当需要发送访问请求时,调用接口类,然后执行接口类对应的接口实现类,接口实现类的方法体便可以针对不同的服务,对请求参数进行对应的逻辑处理,进而使得到的访问请求满足一些复杂服务的访问要求。可见,使用非常简单,直接调用即可,而且不需要在业务层中增加逻辑处理的代码,不会增加业务层的代码量。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种接口创建方法的流程示意图;
图2为本申请实施例提供的一种服务请求方法的流程示意图;
图3为本申请实施例提供的一种接口创建装置的结构框图;
图4为本申请实施例提供的一种服务请求装置的结构框图;
图5为本申请实施例提供的一种计算机设备的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
第一方面,本申请实施例提供一种接口创建方法,该方法是业务方为了访问服务而进行接口创建,即所创建接口为业务方接口。
如图1所示,该方法包括:
S101、获取用于访问预设服务的接口类;
在实际应用中,上述预设服务可以为公共的基础服务,例如,某款社交软件,拥有10亿用户,这10亿用户由该款社交软件自己的一套用户体系来维护和更新,这款社交软件也有很多业务:音乐、新闻、游戏等,这些业务都是共用这一套用户体系,因此可以将这个用户体系单独取出来作为一个基础服务,供各个业务方使用。可理解的是,这里获取的接口类是业务方用于访问该用户体系的接口类。
可理解的是,接口类是java编码里面的概念,只提供接口不提供实现的类,接口类的方法即接口方法是纯虚方法,无法实现接口的具体逻辑。接口类相当于一个框架,框架设定了这个接口类有哪些方法(即接口方法),但是每一个方法的具体工作还没设定。
在具体实施时,需要提前编写好接口类的业务代码,在业务方的接口工程启动时,获取接口类。这里的接口工程是业务方的,且与服务相对应,也就是说,不同的服务对应不同的接口工程。接口工程开始启动,并在启动后开始创建,创建出能访问对应服务的接口。接口工程是包含所有逻辑代码的整体,可以指定接口类所在的路径,因此对接口工程进行扫描可以得到接口类。接口工程具体可以采用Spring工程。
也就是说,上述步骤S101可以包括如下步骤:
S1011、获取预先编写的接口类,所述接口类上添加有所述注解;
可理解的是,这一步是在接口工程启动之前完成的,也就是说,在接口工程启动前,需要工作人员编写好接口类的业务代码,并在接口类的方法即接口方法上添加上相应的注解。
在实际应用时,上述注解可以采用自定义注解,自定义注解有多种,例如,第一自定义注解,所述第一自定义注解中的请求参数至少包括请求路径、服务类型和请求方式;其中,请求路径是指所要访问的服务的url,服务类型是指所要访问的服务的类型,例如,用户数据服务(例如上文中提到的将用户体系单独取出来作为一个基础服务,可以为业务方提供用户数据下载服务)、视频访问服务等。请求方式是指访问请求的发送方式。第一自定义注解,例如,request自定义注解。最常见的请求方式为http请求方式,当然,也可以采用其他的请求方式,例如,RPC(远程过程调用)等。http,即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它用作客户端和服务器之间的请求,客户端或浏览器会向服务器提交http请求,然后服务器向客户端返回响应,其中响应包含有关请求的状态信息,还可能包含请求的内容。而http请求方式中又包括get请求方式、post请求方式、delete请求方式等。get请求方式可用于使用给定的url从给定服务器中检索信息,即从指定资源中请求数据;post请求方式可用于将数据发送到服务器以创建或更新资源;delete请求方式可用来删除指定的资源,它会删除url给出的目标资源的所有当前内容。
当然,自定义注解还可以包括第二自定义注解,例如,PostBody自定义注解。第二自定义注解中包括参数实体,所述参数实体内封装有所述接口类的多个方法参数。这些方法参数为接口类的方法中的参数即接口方法上的参数。当方法参数有很多个时,通过实体封装的方式可以大大简化注解。
在实际应用中,可以根据接口类的需求,选择采用第一自定义注解,或选择第二自定义注解,或者同时采用两种自定义注解。
S1012、在业务方的接口工程启动时,对所述接口工程进行扫描,得到所述接口类。
可理解的是,在扫描得到接口类时,同时也得到了接口方法上的注解。
也就是说,首先编写接口类,并在接口类上添加注解,这些都是接口创建的准备工作。当接口工程启动时,对接口工程进行扫描,即可得到接口类以及接口上方法的注解,进而继续创建接口。
S102、根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;
可理解的是,接口实现类定义了接口类中每一个方法的具体工作。
在实际应用中,可以采用字节码编辑工具生成所述接口实现类,例如,可以采用Javassist框架提供的字节码编辑工具。具体可以在接口工程中集成Javassist框架,Javassist框架中具有字节码编辑工具,字节码编辑工具能够在接口工程运行时动态生成自定义类的字节码,并插入到虚拟机中运行。由于字节码编辑工具生成的是字节码,因此接口实现类是字节码,而非业务代码。字节码编辑工具具体是根据接口类中的方法(格式为业务代码),生成接口实现类中的方法(格式为字节码)。字节码编辑工具不仅生成了接口实现类中的方法,还继承了接口类中的方法的注解,这样接口实现类中也有了注解。
可理解的是,字节码(Byte-code)是一种包含执行程序、由一序列op代码/数据对组成的二进制文件。字节码是一种中间码,它比机器码更抽象。
可理解的是,虽然接口实现类中的每一个方法都定义了其具体工作,但是要想实现每一个方法,需要一份执行逻辑代码,该执行逻辑代码是方法的具体执行逻辑,可以称为方法体。也就是说,接口实现类中的方法如何执行是由执行逻辑代码控制,该执行逻辑代码为字节码。执行逻辑代码通过如下步骤S103和S104得到。
S103、对所述注解进行解析,得到访问预设服务所需的请求参数;
举例来说,所述注解包括第一自定义注解,或者,所述注解包括第一自定义注解和第二自定义注解;其中,所述第一自定义注解中的请求参数至少包括请求路径、服务类型和请求方式;所述第二自定义注解中包括参数实体,所述参数实体内封装有所述接口类的多个方法参数。若注解包括第一自定义注解,则解析到的请求参数有请求路径、服务类型和请求方式等。若注解为第一自定义注解和第二自定义注解,则解析得到的请求为请求路径、服务类型、请求方式以及多个方法参数,这些方法参数为参数实体内封装的参数。这些参数为在进行准备工作时,添加至接口类上注解中的参数,因此这些参数即为访问所述接口类对应的预设服务所需的参数。
S104、根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;
其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;
可理解的是,方法体的生成可以由上述字节码编辑工具实现。可见,字节码编辑工具具体除了根据接口类中的方法(格式为业务代码)生成接口实现类中的方法(格式为字节码)之外,还依据请求参数生成了方法体。该方法体可以是接口实现类中的方法的具体执行逻辑。即,方法体根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成访问请求这一过程可以通过对接口实现类中的多个方法的执行逻辑进行控制而实现。
可理解的是,目前很多的服务都有一定的访问要求,不同的服务可能有不同的访问要求,例如,服务A需要访问请求中的请求路径中除了有服务的url,还要有参数a的签名;服务B要求访问请求路径中除了有服务的url,还要有参数b的签名和接口类方法中的所有参数。
由于目前很多的服务都有一定的访问要求,因此需要对请求参数进行一定的逻辑处理,才能组装成访问请求。可理解的是,步骤“对参数a进行签名,并将参数a的签名添加至请求路径中”,以及步骤“对参数b进行签名,并将参数b的签名和方法参数添加至请求路径中”都是对请求参数的逻辑处理过程,这些过程是由方法体控制执行的,所以本步骤中需要生成方法体。
可理解的是,在生成方法体的过程中,除了要依据请求参数,还要依据服务的访问要求。例如,接口类对应的预设服务要求访问请求中的请求路径中除了有服务的url,还要有参数a的签名,则所要生成的方法体中要有控制执行步骤“对参数a进行签名,并将参数a的签名添加至请求路径中”的代码。再例如,接口类对应的预设服务要求访问请求中的请求路径中除了有服务的url,还要有参数b进行签名,则所要生成的方法体中要有控制执行步骤“对参数b进行签名,并将参数b的签名和方法参数添加至请求路径中”的代码。
可理解的是,方法体中的代码并非业务代码,而是字节码,是可以在虚拟机中运行的。本文中所说的代码有业务代码和字节码;业务代码,例如,接口类的方法,是工作人员编写的;字节码,例如,接口实现类,是虚拟机可以执行的。
在实际应用中,相同类型的服务,其访问要求一般相同,不同类型的服务,其访问要求不同,也就是说,不同的服务类型对应不同的服务访问要求,需要进行不同的逻辑处理,即方法体具有不同的逻辑处理能力。因此需要根据访问服务的类型(即服务类型)和请求参数,生成对应的方法体。下面以两个实例进行说明:
实例(1):针对某一类型的服务,接口实现类的注解采用的是第一自定义注解,生成的方法体为能够对预设参数进行预设处理,将处理后的数据添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成访问请求的执行逻辑代码,即生成的方法体能够对预设参数进行预设处理,将处理后的数据添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成访问请求。上述预设处理有多种,例如,签名处理。
实例(2):针对另一个类型的服务,接口实现类中的注解采用的是第一自定义注解和第二自定义注解,生成的方法体为能够对预设参数进行预设处理,将处理后的数据和对所述参数实体解析出来的各个方法参数添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成访问请求的执行逻辑代码,即方法体能够对预设参数进行预设处理,将处理后的数据和对所述参数实体解析出来的各个方法参数添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成访问请求,上述预设处理有多种,例如,签名处理。
其中,预设参数,例如,在登陆某个网站时,可以将登陆时采用的用户名和/或密码作为预设参数,进而对预设参数进行预设处理后,添加到请求路径中,进而组装成访问请求,使得访问请求中包含了用户名和/或密码这些信息。可理解的是,在实例(1)中,将处理后的数据添加至所述请求路径的过程实际上是对请求参数-请求路径进行逻辑处理的过程。在实例(2)中,将处理后的数据和对所述参数实体解析出来的各个请求参数添加至所述请求路径的过程实际上是对请求参数-参数实体和请求路径进行逻辑处理的过程。
在生成方法体之后,将方法体插入到接口实现类中,当调用接口实现类时,便可以采用接口实现类中的方法体对参数进行逻辑处理和访问请求组装,进而得到用于访问服务的访问请求。
S105、将包含所述方法体的接口实现类注入到应用场景的代码中。
可理解的是,此时的接口实现类中是包含方法体的。
可理解的是,将接口类和接口实现类注入到应用场景的业务代码中,实际上是将接口实现类注入到上下文环境中,可以理解为注入到虚拟机中运行,这样就可以供工程使用了。可理解的是,该步骤中的代码是字节码。此时创建工作已经完成,可以在后续发送访问请求时进行调用。
本申请实施例提供的接口创建方法,根据接口类生成接口实现类,并继承了接口类上的注解,然后依据注解中的各个请求参数生成方法体并插入到接口实现类中,并将包括方法体的接口实现类注入到应用场景中。其中,方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成访问请求。当需要发送访问请求时,调用接口类,然后执行接口类对应的接口实现类,接口实现类中的方法体便可以针对不同的服务,对请求参数进行对应的逻辑处理,进而使得到的访问请求满足一些复杂服务的访问要求。可见,使用非常简单,直接调用即可,也好维护,而且只需要编写接口类的代码,不需要在业务层中增加逻辑处理的代码,不会增加业务层的代码量。
进一步的,feign只能发送http访问请求,而本申请不是通过feign实现,对访问请求的格式没有限定,不仅可以发送http访问请求,还可以发送其他格式的访问请求,增加访问请求的多样性。
第二方面,本申请实施例还提供一种服务请求方法,该方法基于第一方面提供的接口创建方法,如图2所示,该方法包括:
S201、在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为第一方面中提供的接口创建方法中的接口实现类;
在实际应用中,在应用场景中的代码中执行接口类对应的接口实现类,具体是执行接口实现类中的方法体。
由于一个服务的接口类和接口实现类具有映射关系,当需要对某一个服务进行访问时,调用该服务对应的接口类,便知道需要运行虚拟机中的哪个接口实现类,然后通过在虚拟机中运行接口实现类,便可以得到对该服务的访问请求。
可理解的是,接口实现类中的方法体在生成访问请求时,首先对请求参数进行一定的逻辑处理,在将处理后的请求参数组装成访问请求。
可理解的是,由于本申请实施例提供的服务请求方法是基于接口实现类中的方法体实现,而方法体是依据接口注解生成,因此本申请实施例提供的服务请求方法是一种基于接口注解的服务请求方法。
例如,当某个用户登陆某个视频网站时,输入了账户和密码,这样就可以获得该用户的账户和密码等参数,此时调用访问该视频网站这个服务的接口类,然后在上下文环境中执行接口类对应的接口实现类,接口实现类中的方法体对该用户的账户和密码进行一定的加密,再依据加密后的账户和密码组装成访问请求。
再例如,当某个用户打开某个视频网站的某个视频时,调用访问该视频网站的该视频的这个服务对应的接口类,在上下文环境中执行该接口类对应的接口实现类,接口实现类中的方法体对该视频的地址采用特定的算法(例如,MD5加密算法)进行加密,然后依据加密后的视频地址组装成访问请求。
S202、根据所述访问请求中的服务类型,调用对应的底层封装方法;
在将访问请求发送至服务之前,还需要对访问请求进行一定的封装处理,不同的服务类型对应不同的底层封装方法,例如,服务类型A对应底层封装方法a、服务类型B对应底层封装方法b、服务类型C对应底层封装方法c,因此根据服务类型来调用对应的底层封装方法。
在实际用用中,封装方法对访问请求的封装处理可以包括:对访问请求进行一定的逻辑过滤,例如,验证请求参数是否正确、验证私钥是否正确、验证参数格式是否正确等。通过逻辑过滤,可以将一些不符合规定的访问请求滤除,只有符合规定的访问请求才能发给服务。
当然,封装方法除了进行逻辑过滤之外,还可以根据业务场景进行一些其他的操作,例如,统计服务在单位时间内处理访问请求的数量等。
S203、采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
这里,采用步骤S202调用的底层封装方法对访问请求进行封装处理之后,便可以将访问请求发送至服务,进行服务访问。
在一些实施例中,还可以采用对应的底层封装方法将所述预设服务的返回值的属性和自定义类型的属性进行匹配,并通过所述自定义类型读取所述预设服务返回值的每一个属性。
其中,对象类型即Object类型是所有自定义类型的父类,自定义类型拥有对象类型的所有属性,自定义类型可以新增其他的属性,这些属性正好可以跟预设服务的返回值的属性一一对应,预设服务的返回值都可以保存在对象类型中,但是没有办法跟预设服务的返回值匹配起来,因此这里将预设服务的返回值的类型和自定义类型的属性一一匹配,这样就可以通过自定义类型读取预设服务的返回值的每一个属性了。
可理解的是,本申请所提供的方法可以由计算机设备执行,具体在计算机设备上单独创建一个类,该类中包含上述方法的各个步骤的执行逻辑,从而由该类实现上述方法的各个步骤。
本申请实施例提供的服务请求方法,直接调用接口实现类,其中的方法体便可以对请求参数进行对应的逻辑处理,进而使得到的访问请求满足一些复杂服务的访问要求。可见,使用非常简单,直接调用即可,而且不需要在业务层中增加逻辑处理的代码,不会增加业务层的代码量。而且,由于不是通过feign实现,因此不仅可以发送http访问请求,还可以发送其他格式的访问请求,增加访问请求的多样性。
第三方面,本申请实施例提供一种接口创建装置,如图3所示,该装置300包括:
获取模块301,用于获取用于访问预设服务的接口类;
第一生成模块302,用于根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;
解析模块303,用于对所述注解进行解析,得到访问预设服务所需的请求参数;
第二生成模块304,用于根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;
注入模块305,用于将包含所述方法体的接口实现类注入到应用场景的代码中。
在一些实施例中,第一生成模块具体用于:根据所述接口类,采用字节码编辑工具生成所述接口实现类。
在一些实施例中,所述注解包括第一自定义注解,或者,所述注解包括第一自定义注解和第二自定义注解;其中,所述第一自定义注解中的请求参数至少包括请求路径、服务类型和请求方式;所述第二自定义注解中包括参数实体,所述参数实体内封装有所述接口类的多个方法参数。
在一些实施例中,不同的服务类型对应不同的服务访问要求,所述注解为所述第一自定义注解,所述方法体能够对预设参数进行预设处理,将处理后的数据添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成访问请求。
在一些实施例中,不同的服务类型对应不同的服务访问要求,所述注解由所述第一自定义注解和所述第二自定义注解组成,所述方法体能够对预设参数进行预设处理,将处理后的数据和对所述参数实体解析出来的各个方法参数添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成访问请求。
可理解的是,本申请实施例提供的接口创建装置与第一方面提供的接口创建方法相对应,有关内容的解释、举例、有益效果等部分可以参考第一方面中的相应部分,此处不再赘述。
第四方面,本申请实施例提供一种服务请求装置,如图4所示,该装置400包括:
第一调用模块401,用于在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为第三方面中接口创建装置中的接口实现类;
第二调用模块402,用于根据所述访问请求中的服务类型,调用对应的底层封装方法;
封装处理模块403,用于采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
在一些实施例中,封装处理模块还用于:采用对应的底层封装方法将所述预设服务的返回值的属性和自定义类型的属性进行匹配,并通过所述自定义类型读取所述预设服务返回值的每一个属性。
可理解的是,本申请实施例提供的服务访问装置与第二方面提供的服务访问方法相对应,有关内容的解释、举例、有益效果等部分可以参考第二方面中的相应部分,此处不再赘述。
第五方面,本申请实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面中提供的接口创建方法的步骤或第二方面中提供的服务请求方法的步骤。
图5示出了一个实施例中计算机设备的内部结构图。如图5所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏等。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可以存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现上述接口创建方法或服务请求方法。该内存储器中也可以储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行上述接口创建方法或服务请求方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的接口创建装置和服务请求装置可以实现为一种计算机程序的形式,计算机程序可在如图5所示的计算机设备上运行。计算机设备的存储器中可存储组成该接口创建装置的各个程序模块。例如,图3所示的获取模块301、第一生成模块302、解析模块303、第二生成模块304、注入模块305。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的接口创建方法中的步骤。计算机设备的存储器中也可存储组成该服务请求装置的各个程序模块,例如,图4所示出的第一调用模块401、第二调用模块402和封装处理模块403。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的服务请求方法中的步骤。
例如,图5所示的计算机设备可以通过如图3所示的接口创建装置中的获取模块301执行获取用于访问预设服务的接口类;计算机设备可以通过第一生成模块302执行根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;计算机设备可以通过解析模块303执行对所述注解进行解析,得到访问预设服务所需的请求参数;计算机设备可以通过第二生成模块304执行根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;计算机设备可以通过注入模块305执行将包含所述方法体的接口实现类注入到应用场景的代码中。
再例如,例如,图5所示的计算机设备可以通过如图4所示出服务请求装置中的第一调用模块401执行在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为上述接口创建装置中的接口实现类;计算机设备可以通过第二调用模块402执行根据所述访问请求中的服务类型,调用对应的底层封装方法;计算机设备可以通过封装处理模块403执行采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
可理解的是,本申请实施例提供的计算机设备,有关内容的解释、举例、有益效果等部分可以参考第一方面或第二方面中的相应部分,此处不再赘述。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中提供的接口创建方法的步骤或第二方面中提供的服务请求方法的步骤。
可理解的是,本申请实施例提供的计算机可读存储介质,有关内容的解释、举例、有益效果等部分可以参考第一方面或第二方面中的相应部分,此处不再赘述。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种接口创建方法,其特征在于,包括:
获取用于访问预设服务的接口类;
根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;
对所述注解进行解析,得到访问预设服务所需的请求参数;
根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;
将包含所述方法体的接口实现类注入到应用场景的代码中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述接口类,生成对应的接口实现类,包括:
根据所述接口类,采用字节码编辑工具生成所述接口实现类。
3.根据权利要求1~2任一项所述的方法,其特征在于,所述注解包括第一自定义注解,或者,所述注解包括第一自定义注解和第二自定义注解;其中,所述第一自定义注解中的请求参数至少包括请求路径、服务类型和请求方式;所述第二自定义注解中包括参数实体,所述参数实体内封装有所述接口类的多个方法参数。
4.根据权利要求3所述的方法,其特征在于,不同的服务类型对应不同的服务访问要求,所述注解为所述第一自定义注解,所述方法体为能够根据所述服务类型对预设参数进行对应的预设处理,将处理后的数据添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成预设服务的访问请求。
5.根据权利要求3所述的方法,其特征在于,不同的服务类型对应不同的服务访问要求,所述注解包括所述第一自定义注解和所述第二自定义注解,所述方法体为能够根据所述服务类型对预设参数进行对应的预设处理,将处理后的数据和对所述参数实体解析出来的各个方法参数添加至所述请求路径中,并根据添加数据后的请求路径、所述服务类型和请求方式组装成预设服务的访问请求。
6.一种服务请求方法,其特征在于,包括:
在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为权利要求1~5任一项所述接口创建方法中的接口实现类;
根据所述访问请求中的服务类型,调用对应的底层封装方法;
采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
7.一种接口创建装置,其特征在于,包括:
获取模块,用于获取用于访问预设服务的接口类;
第一生成模块,用于根据所述接口类,生成对应的接口实现类,并使所述接口实现类继承所述接口类中的注解;
解析模块,用于对所述注解进行解析,得到访问预设服务所需的请求参数;
第二生成模块,用于根据所述请求参数,生成对应的方法体,并将所述方法体插入所述接口实现类中;其中,所述方法体能够根据不同的服务访问要求对所述请求参数进行对应的逻辑处理,并根据处理后的请求参数生成预设服务的访问请求;
注入模块,用于将包含所述方法体的接口实现类注入到应用场景的代码中。
8.一种服务请求装置,其特征在于,包括:
第一调用模块,用于在需要访问预设服务时,调用对应的接口类,根据所调用的接口类对应的接口实现类生成对所述预设服务的访问请求;其中,所述接口实现类为权利要求7所述接口创建装置中的接口实现类;
第二调用模块,用于根据所述访问请求中的服务类型,调用对应的底层封装方法;
封装处理模块,用于采用所述底层封装方法对所述访问请求进行对应的封装处理,并将处理之后的访问请求发送至所述预设服务。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN201910652082.0A 2019-07-18 2019-07-18 接口创建方法、服务请求方法、装置、计算机设备和介质 Active CN110381135B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910652082.0A CN110381135B (zh) 2019-07-18 2019-07-18 接口创建方法、服务请求方法、装置、计算机设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910652082.0A CN110381135B (zh) 2019-07-18 2019-07-18 接口创建方法、服务请求方法、装置、计算机设备和介质

Publications (2)

Publication Number Publication Date
CN110381135A CN110381135A (zh) 2019-10-25
CN110381135B true CN110381135B (zh) 2021-09-28

Family

ID=68254029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910652082.0A Active CN110381135B (zh) 2019-07-18 2019-07-18 接口创建方法、服务请求方法、装置、计算机设备和介质

Country Status (1)

Country Link
CN (1) CN110381135B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110808840B (zh) * 2019-10-30 2022-08-09 网易(杭州)网络有限公司 业务处理方法及装置、电子设备、存储介质
CN110955543A (zh) * 2019-12-12 2020-04-03 浙江大搜车软件技术有限公司 业务处理方法、装置、设备和计算机可读存储介质
CN111314306A (zh) * 2020-01-17 2020-06-19 网易(杭州)网络有限公司 接口访问方法及装置、电子设备、存储介质
CN111338637A (zh) * 2020-02-26 2020-06-26 腾讯科技(深圳)有限公司 一种代码生成方法及装置
CN111414194B (zh) * 2020-03-19 2023-08-11 政采云有限公司 一种接口信息生成方法、系统、电子设备及存储介质
CN111400070B (zh) * 2020-03-24 2023-05-19 广州华多网络科技有限公司 终端设备及其跨进程接口调用实现和执行方法
CN111625224B (zh) * 2020-05-28 2023-11-24 北京百度网讯科技有限公司 代码生成方法、装置、设备及存储介质
CN112367304B (zh) * 2020-10-22 2022-08-16 杭州大搜车汽车服务有限公司 请求限制方法、装置、计算机设备和存储介质
CN112398870B (zh) * 2020-11-30 2022-09-13 深圳市六度人和科技有限公司 跨平台协议生成方法、装置、系统、设备及存储介质
CN112650533B (zh) * 2020-12-22 2024-03-19 深圳前海微众银行股份有限公司 接口文档的生成方法、装置和终端设备
CN112711405B (zh) * 2020-12-28 2022-10-25 浪潮通用软件有限公司 一种生成增删改查应用程序接口的方法、设备及存储介质
CN113238817A (zh) * 2021-05-20 2021-08-10 上海销氪信息科技有限公司 一种接口透传方法、装置、电子设备和存储介质
CN113641518A (zh) * 2021-08-16 2021-11-12 京东科技控股股份有限公司 服务调用方法、装置及存储介质
CN113778883A (zh) * 2021-09-13 2021-12-10 湖南快乐阳光互动娱乐传媒有限公司 接口文档、测试和模拟生成方法和装置、计算机存储介质
CN115134396A (zh) * 2022-06-24 2022-09-30 京东方科技集团股份有限公司 服务的调用方法、装置、电子设备及存储介质
CN117149166B (zh) * 2023-10-30 2023-12-29 江苏德高物联技术有限公司 电磁水表数据对接代码生成方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399734A (zh) * 2013-07-10 2013-11-20 北京慧点科技股份有限公司 生成rest服务和rest实现的方法及对应的设备
CN105955790A (zh) * 2016-05-20 2016-09-21 广州华多网络科技有限公司 数据处理方法及装置
CN106528215A (zh) * 2016-10-25 2017-03-22 广东亿迅科技有限公司 基于java的动态加载命令的方法及装置
CN106656953A (zh) * 2016-09-23 2017-05-10 焦点科技股份有限公司 一种基于互联网的系统间安全调用接口实现方法
CN108932122A (zh) * 2018-06-19 2018-12-04 上海陆家嘴国际金融资产交易市场股份有限公司 接口文档生成方法、装置、计算机设备和存储介质
CN108959076A (zh) * 2018-06-25 2018-12-07 浙江网新恒天软件有限公司 一种api在线调试方法
CN109710238A (zh) * 2018-12-20 2019-05-03 国云科技股份有限公司 一种基于Spring Cloud的代码生成方法
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法
CN109739573A (zh) * 2018-12-27 2019-05-10 深圳市多度科技有限公司 实现api接口调用的处理方法及装置、实现api接口的系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7765537B2 (en) * 2005-11-21 2010-07-27 International Business Machines Corporation Profiling interface assisted class loading for byte code instrumented logic

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399734A (zh) * 2013-07-10 2013-11-20 北京慧点科技股份有限公司 生成rest服务和rest实现的方法及对应的设备
CN105955790A (zh) * 2016-05-20 2016-09-21 广州华多网络科技有限公司 数据处理方法及装置
CN106656953A (zh) * 2016-09-23 2017-05-10 焦点科技股份有限公司 一种基于互联网的系统间安全调用接口实现方法
CN106528215A (zh) * 2016-10-25 2017-03-22 广东亿迅科技有限公司 基于java的动态加载命令的方法及装置
CN108932122A (zh) * 2018-06-19 2018-12-04 上海陆家嘴国际金融资产交易市场股份有限公司 接口文档生成方法、装置、计算机设备和存储介质
CN108959076A (zh) * 2018-06-25 2018-12-07 浙江网新恒天软件有限公司 一种api在线调试方法
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法
CN109710238A (zh) * 2018-12-20 2019-05-03 国云科技股份有限公司 一种基于Spring Cloud的代码生成方法
CN109739573A (zh) * 2018-12-27 2019-05-10 深圳市多度科技有限公司 实现api接口调用的处理方法及装置、实现api接口的系统

Also Published As

Publication number Publication date
CN110381135A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CN110381135B (zh) 接口创建方法、服务请求方法、装置、计算机设备和介质
CN109688120B (zh) 基于改进RBAC模型及Spring Security框架的动态权限管理系统
US10798127B2 (en) Enhanced document and event mirroring for accessing internet content
Zheng et al. Ethereum smart contract development in solidity
EP2976709B1 (en) Systems and methods for intercepting, processing, and protecting user data through web application pattern detection
US6438600B1 (en) Securely sharing log-in credentials among trusted browser-based applications
US8060932B2 (en) Modular enterprise authorization solution
US7730499B2 (en) Protocol agnostic request response pattern
Vukotic et al. Apache tomcat 7
CN107908392B (zh) 数据采集工具包定制方法、装置、终端和存储介质
CN109214161B (zh) 一种二维码安全标签登录系统
CN107015996A (zh) 一种资源访问方法、装置及系统
JP2001236014A (ja) 複数の政策をマージする機構
Meyerovich et al. Object views: Fine-grained sharing in browsers
US10908971B1 (en) Method and system for generating a customizable connector
CN108449187B (zh) 一种令牌刷新的方法及装置
CN115543479A (zh) 一种适用于动态参数的接口调用解析方法及装置
CN108021564A (zh) 一种页面重定向的方法和设备
US20150150081A1 (en) Template representation of security resources
US8250178B2 (en) Protecting client-side code
Bhargavan et al. Defensive JavaScript: Building and Verifying Secure Web Components
CN112346774A (zh) 一种应用安装包的生成方法和装置
US11797701B1 (en) Secure data collaboration
US7003800B1 (en) Self-decrypting web site pages
CN116244682A (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
GR01 Patent grant
GR01 Patent grant