CN110209505A - 一种数据请求方法及相关设备 - Google Patents

一种数据请求方法及相关设备 Download PDF

Info

Publication number
CN110209505A
CN110209505A CN201910169627.2A CN201910169627A CN110209505A CN 110209505 A CN110209505 A CN 110209505A CN 201910169627 A CN201910169627 A CN 201910169627A CN 110209505 A CN110209505 A CN 110209505A
Authority
CN
China
Prior art keywords
request
programming interfaces
application programming
proxy server
data
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.)
Granted
Application number
CN201910169627.2A
Other languages
English (en)
Other versions
CN110209505B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910169627.2A priority Critical patent/CN110209505B/zh
Publication of CN110209505A publication Critical patent/CN110209505A/zh
Application granted granted Critical
Publication of CN110209505B publication Critical patent/CN110209505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例公开了一种数据请求方法及相关设备,该方法包括:代理服务器首先接收多个第一应用程序接口中的第一目标应用程序接口发送的第一请求;接着根据第一请求携带的第一目标应用程序接口的第一标识信息,确定多个第二应用程序接口中的第二目标应用程序接口、以及确定第一目标应用程序接口和第二目标应用程序接口之间的数据映射规则;然后根据数据映射规则,将第一请求映射为第二请求;最后向第二目标应用程序接口发送第二请求,以便向第二目标应用程序接口请求数据。采用本发明实施例,可以实现接口协议或数据结构不同的应用程序接口之间的对接,提高应用程序接口的利用率和管理效率。

Description

一种数据请求方法及相关设备
技术领域
本发明涉及通信技术领域,尤其涉及一种数据请求方法及相关设备。
背景技术
目前,当服务平台支持不同的服务功能时,经常需要从第三方服务提供商获取服务数据,而不同的第三方服务提供商开发的对外应用程序接口并没有统一的接口协议/数据结构。因此,在对接不同的第三方服务提供商对应的应用程序接口时,需要针对性开发一套对接协议来实现接口对接。这种针对每个第三方服务提供商,服务平台需开发使用配套接口协议/数据结构的接口来与之对接的方式存在以下几个弊端:第一,当服务平台需要切换第三方服务提供商/第三方服务提供商服务异常/第三方服务提供商停止提供服务时,针对该第三方服务提供商开发的平台接口将被迫停止使用,导致工作量的浪费;第二,当功能相同的不同第三方服务提供商的接口协议命名风格和数据结构不同时,需先定制性开发接口和协议,再将定制的接口和协议与本平台的协议进行统一,并且若第三方服务提供商调整了协议,定制的接口和协议也必须进行相应的调整;第三,在平台接口发生变化后,若开发人员没有及时维护对外的接口文档,也将导致第三方服务异常。
发明内容
本发明提供一种数据请求方法及相关设备,实现了一套通用的应用程序接口对接方法,提高了第三方服务接口的利用率和接口管理的高效性。
第一方面,本发明实施例提供了一种数据请求方法,包括:
所述代理服务器接收所述多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息;
所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口;
所述代理服务器确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则;
所述代理服务器根据所述数据映射规则,将所述第一请求映射为第二请求;
所述代理服务器向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
其中,所述第一请求携带第一请求字段;
所述数据映射规则包括第一数据映射规则,所述第一数据映射规则包括第一映射源字段路径和第一映射目的字段路径的对应关系;
所述代理服务器根据所述数据映射规则,将所述第一请求映射为第二请求包括:
所述代理服务器按照所述第一映射源字段路径和所述第一映射目的字段路径的对应关系,将所述第一请求字段映射为第二请求字段,所述第二请求包括所述第二请求字段。
其中,所述数据映射规则包括第二数据映射规则;
所述代理服务器向所述第二目标应用程序接口发送所述第二请求之后,还包括:
所述代理服务器接收所述第二目标应用程序接口发送的第一请求响应信息;
所述代理服务器根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息;
所述代理服务器向所述第一目标应用程序接口发送所述第二请求响应信息,所述第二请求响应信息用于指示所述服务平台为用户提供服务。
其中,所述第二数据映射规则包括第二映射源字段路径和第二映射目的字段路径的对应关系;所述第一请求响应信息包括第一响应字段;
所述代理服务器根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息包括:
所述代理服务器按照所述第二映射源字段路径和所述第二映射目的字段路径的对应关系,将所述第一响应字段映射为第二响应字段,所述第二请求响应信息包括所述第二响应字段。
其中,所述代理服务器确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则包括:
所述代理服务器确定所述第二目标应用程序接口的第二标识信息;
所述代理服务器根据所述第一标识信息和所述第二标识信息,确定索引信息;
所述代理服务器从预设的映射表中查找与所述索引信息对应的所述数据映射规则,所述映射表包括所述索引信息与所述数据映射规则的对应关系。
其中,所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口包括:
所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的多个候选应用程序接口;
所述代理服务器确定所述多个候选应用程序接口中每个候选应用程序接口的应用优先级;
所述代理服务器根据所述应用优先级,从所述多个候选应用程序接口中确定所述第二目标应用程序接口。
其中,所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口包括:
所述代理服务器确定所述第一标识信息的摘要值;
所述代理服务器根据所述摘要值,确定所述第二目标应用程序接口。
其中,所述数据映射规则还包括第三数据映射规则;
所述代理服务器向所述第二目标应用程序接口发送所述第二请求之后,还包括:
所述代理服务器确定等待所述第一请求响应信息的累积时长;
所述代理服务器当所述累积时长超过第一预设阈值时,根据所述第三数据映射规则生成错误信息;
所述代理服务器向所述第一目标应用程序接口发送所述错误信息,所述错误信息用于指示所述服务平台显示提示信息。
其中,所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口之前,还包括:
所述代理服务器确定所述第一目标应用程序接口的访问频率;
所述代理服务器当所述访问频率不超过第二预设阈值时,执行所述根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口的操作。
第二方面,本发明实施例提供了一种代理服务器,包括:
接收模块,用于接收所述多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息;
确定模块,用于根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口;
所述确定模块,还用于确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则;
映射模块,用于根据所述数据映射规则,将所述第一请求映射为第二请求;
发送模块,用于向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
其中,所述第一请求携带第一请求字段;
所述数据映射规则包括第一数据映射规则,所述第一数据映射规则包括第一映射源字段路径和第一映射目的字段路径的对应关系;
所述映射模块还用于:
按照所述第一映射源字段路径和所述第一映射目的字段路径的对应关系,将所述第一请求字段映射为第二请求字段,所述第二请求包括所述第二请求字段。
其中,所述数据映射规则包括第二数据映射规则;
所述接收模块还用于:
接收所述第二目标应用程序接口发送的第一请求响应信息;
所述映射模块还用于:
根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息;
所述发送模块还用于:
向所述第一目标应用程序接口发送所述第二请求响应信息,所述第二请求响应信息用于指示所述服务平台为用户提供服务。
其中,所述第二数据映射规则包括第二映射源字段路径和第二映射目的字段路径的对应关系;所述第一请求响应信息包括第一响应字段;
所述映射模块还用于:
按照所述第二映射源字段路径和所述第二映射目的字段路径的对应关系,将所述第一响应字段映射为第二响应字段,所述第二请求响应信息包括所述第二响应字段。
其中,所述确定模块还用于:
确定所述第二目标应用程序接口的第二标识信息;
根据所述第一标识信息和所述第二标识信息,确定索引信息;
从预设的映射表中查找与所述索引信息对应的所述数据映射规则,所述映射表包括所述索引信息与所述数据映射规则的对应关系。
其中,所述确定模块还用于:
根据所述第一标识信息,确定所述多个第二应用程序接口中的多个候选应用程序接口;
确定所述多个候选应用程序接口中每个候选应用程序接口的应用优先级;
根据所述应用优先级,从所述多个候选应用程序接口中确定所述第二目标应用程序接口。
其中,所述确定模块还用于:
确定所述第一标识信息的摘要值;
根据所述摘要值,确定所述第二目标应用程序接口。
其中,所述数据映射规则还包括第三数据映射规则;
所述映射模块还用于:
确定等待所述第一请求响应信息的累积时长;
当所述累积时长超过第一预设阈值时,根据所述第三数据映射规则生成错误信息;
所述发送模块还用于:
向所述第一目标应用程序接口发送所述错误信息,所述错误信息用于指示所述服务平台显示提示信息。
其中,所述确定模块还用于:
确定所述第一目标应用程序接口的访问频率;
当所述访问频率不超过第二预设阈值时,执行所述根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口的操作。
第三方面,本发明实施例提供了另一种代理服务器,包括:处理器、存储器和通信总线,其中,通信总线用于实现处理器和存储器之间连接通信,处理器执行存储器中存储的程序用于实现上述第一方面提供的数据请求方法中的步骤。
本发明实施例的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载并执行上述各方面所述的方法。
本发明实施例的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
实施本发明实施例,服务系统的代理服务器可以首先接收该服务系统中的服务平台包含的多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,该第一请求携带所述第一目标应用程序接口的第一标识信息;接着根据第一标识信息,确定该服务系统中的多个第三方服务器对应的多个第二应用程序接口中的第二目标应用程序接口、以及确定第一目标应用程序接口和第二目标应用程序接口之间的数据映射规则;然后根据数据映射规则,将第一请求映射为第二请求;最后向第二目标应用程序接口发送第二请求,该第二请求用于向第二目标应用程序接口请求数据。通过上述方法,在第一目标应用程序接口和第二目标应用程序接口的接口协议/数据结构不同时,仍然可以使这两个应用程序接口顺利对接,即实现了通用的应用程序接口对接方法,提高了第三方服务接口的利用率。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种服务系统示意图;
图2是本发明实施例提供的一种数据请求方法的流程示意图;
图3是本发明实施例提供的另一种数据请求方法的流程示意图;
图4是本发明实施例提供的一种服务平台为用户提供服务的示意图;
图5是本发明实施例提供的一种代理服务器的结构示意图;
图6是本发明实施例提供的另一种代理服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种服务系统的结构示意图。如图所示,该服务系统包括代理服务器、服务平台和多个第三方服务器。其中,第三方服务器为第三方服务提供商所使用的服务器,第三方服务提供商包括服务提供商(Service Provider,SP)和内容提供商(Content Provider,CP),CP/SP可以在第三方服务器上开发多种服务对应的对外应用程序接口(Application Pro-gramming Interface,API),本发明实施例将此类API称为CP/SP API。服务平台可以为用户提供各类服务,如查天气、收听电台等,其中,一部分服务可以由该服务平台自主实现,另一部分服务所需的服务数据需要从第三方服务提供商获得。相应地,服务平台也可以针对多种服务开发对应的API(平台API)。当需要请求第三方服务时,服务平台通过代理服务器转发数据和请求,以便使平台API与CP/SP进行API对接,达到从CP/SP API获取服务数据(如天气数据、电台数据)的目的。若平台API和CP/SP API所使用的数据结构/接口协议相同,则代理服务器对平台API和CP/SPAPI之间的交互数据进行透传即可,否则,代理服务器需要对交互数据进行处理,以使该交互数据被接收方识别,从而实现有效的数据交互。该交互数据可以包括平台API向CP/SP API发送的请求信息以及CP/SP API向平台API发送的请求响应信息。基于上述服务系统,本发明实施例提供了如下数据请求方法。
请参见图2,图2是本发明实施例提供的一种数据请求方法的流程示意图,该方法包括但不限于如下步骤:
S201,代理服务器接收多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息。
具体实现中,多个第一应用程序接口属于代理服务器所在服务系统中的服务平台,第一目标应用程序接口可以是多个第一应用程序接口中的任一个。其中,第一标识信息可以但不限于为第一目标应用程序接口的地址信息,如统一资源定位符(uniformresource locator,url)。
需要说明的是,代理服务器可以同时为多个服务平台服务,考虑到描述的简洁性和方法的通用性,本发明实施例仅以一个服务平台为例进行阐述。
S202,代理服务器根据所述第一标识信息,确定多个第二应用程序接口中的第二目标应用程序接口。
需要说明的是,为了便于管理和查询API的相关信息,可以在代理服务器中预先建立一个数据库,该数据库用于存储第一应用程序接口、第二应用程序接口、第三方服务提供商(CP/SP)、服务平台的相关信息以及第一应用程序接口和第二应用程序接口之间的映射信息。
例如,如表2所示,针对每个API,数据库中可以包括它的全局ID、url、url的摘要值(url_id)、访问频率的预设阈值(freq)、请求方式(type)、功能信息(func)、简介(intro)、错误码(error)、请求包的说明信息(req_body_id)、回复包的说明信息(rsp_body_id)、请求包示例(req_example_id)、回复包示例(rsp_example_id)、所属的功能模块的标识(module_id)、服务状态信息(status)、创建时间(create_time)和更新时间(update_time)。其中,全局ID可以是代理服务器为API分配的唯一标识。url_id可以但不限于为url的哈希值(url_hash_id)。error为数据处理/传输过程中可能出现的各种错误的代码,如错误码001表示数据请求失败。其中,req_body_id、rsp_body_id、req_example_id是预设数据格式(如JSON)的数据对象,可以将其中的每个数据对象作为数据块单独存储,并将数据块的名称或存储路径与对应的url/url_id/ID建立映射关系,以便在需要时可以便捷地查找该数据块。
表1.API资料的属性说明
名称 说明 功能
ID 全局URL的ID API的唯一标识
url url字符串
url_id url的摘要值 优化查询使用
type GET/POST 区分请求
续表1.API资料的属性说明
又如,针对每个CP/SP,数据库中可以包括代理服务器为其分配的ID、该CP/SP所属的公司以及所属公司的联系方式。如表2所示,名称为XX1的SP被分配的ID为acbd、所属的公司为pear有限公司以及联系方式为0127-8977287;名称为XX2的CP被分配的ID为cvfg、所属的公司为grape有限公司以及联系方式为0357-0997446。
又如,为了实现API的模块化管理,可以在数据库中录入服务平台所包括的每个功能模块的信息。如表3所示,服务平台XX包括两个功能模块,功能模块8091的name为“天气查询模块”,用于描述该功能模块的功能、创建时间(create_time)为2017-09-23以及更新时间(update_time)为2018-12-17、对应的线上主机(online_host)的地址为192.168.1.1/24、测试主机(test_host)的地址为192.168.1.1/24。除此之外,表3中还包括功能模块5634的name、create_time、update_time、online_host的地址以及test_host地址。
表2.CP/SP资料表
表3服务平台XX的资料表
基于上述数据库,可以根据API的ID/url/url_id,查询该API的详细信息。并将req_body_id、rsp_body_id,req_example_id和rsp_example_id按照可读的方式进行组合并生成开发文档,例如,可以生成html或pdf文档。当某个API发生变化时,代理服务器依据该API的ID/url/url_id更新相应部分的信息、以及更新该API的开发文档中的对应部分,从而可以方便地对各个API口进行增删改查,使得API的管理更加轻松高效。
可选的,代理服务器还可以监测各个API的运营情况。其中,可以但不限于针对每个API,实时监测其调用情况,并生成每月/周的调用曲线图、以及所有API的调用总揽图以便用户查看。还可以监控每个API的数据流量,当数据流量达到预设峰值时,发出告警信息。
可选的,代理服务器还可以控制API的服务状态并统计各个API的暂停、启用和访问数据。在某个API出现异常时,可以提示用户屏蔽该API的访问,等待其修复后再重新启用。还可以针对目标用户,统计API调用服务的用量,以方便用户感知自己的业务请求量。
具体实现中,可以首先从数据库中查找与第一标识信息对应的第二标识信息,其中,数据库中可以包括映射表,该映射表包含第一标识信息(url或url_id)与第二标识信息的对应关系。第二标识信息可以为第二目标应用程序接口的url或url_id。为了区别,不妨将第二目标应用程序接口的url和url_id分别记为third_url和third_url_id;然后根据查找到的第二标识信息,确定第二目标应用程序接口。
可选的,为了提高服务平台的容灾能力,可以首先根据第一标识信息,确定多个第二应用程序接口中的多个候选应用程序接口;接着确定多个候选应用程序接口中每个候选应用程序接口的应用优先级,其中,可以从数据库中查找每个候选应用程序接口的创建时间/更新时间,并根据更新时间/创建时间确定应用优先级;然后根据应用优先级,从多个候选应用程序中确定第二目标应用程序接口。其中,还可以从数据库查询每个候选应用程序接口的服务状态,再将应用优先级最高且服务状态为正常的候选应用程序接口确定为第二目标应用程序接口。在上述方法中,当某个候选应用程序接口不可用时,可以立即切换到另外一个候选应用程序接口获取服务数据,从而有效避免第三方应用程序接口不可用而导致服务失败的问题。
例如:数据库中包括如表4所示映射表,第一标识信息url_1对应的第二标识信息包括third_url_1和third_url_2,其中,third_url_1对应的第二应用程序接口的创建时间和更新时间分别为2012-04-12和2018-12-09,third_url_2对应的第二应用程序接口的创建时间和更新时间分别为2015-11-23和2017-09-13。类似的,该映射表中还包括第一标识信息url_2及其映射信息。当第一目标应用程序接口的url为url_1时,首先根据表4查找到第二标识信息third_url_1和third_url_2;接着将第二应用程序接口third_url_1和third_url_2确定为候选应用程序接口;然后比较两个候选应用程序接口的创建时间,因为候选应用程序接口third_url_2的创建时间晚于third_url_1,所以选择候选应用程序接口third_url_2为第二目标应用程序接口。
表4.映射表-1
可选的,url_id和third_url_id可以为整形值,因此还可以根据url_id和third_url_id相除的余数,从多个候选应用程序接口中确定第二目标应用程序接口,其中,可以但不限于将余数最小或余数为预设值的候选应用程序接口确定为第二目标应用程序接口。
可选的,由于url的长度较长,为了提高查询效率,可以首先确定第一标识信息的摘要值,其中,当第一标识信息为url时,可以计算url的哈希值作为摘要值(url_id);接着从数据库中查找该摘要值对应的第二标识信息;然后根据第二标识信息确定第二目标应用程序接口。其中,为了保证信息查询的准确性,还可以根据url_id从数据库(如表1)中查询第一目标应用程序接口的url,并将查询到的url与第一请求中携带的url进行匹配。若两者相同,则确定信息查询准确并执行后续操作。否则,确定信息查询有误并返回错误信息。
S203,代理服务器确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则。
具体实现中,可以首先确定第二目标应用程序接口的第二标识信息(third_url或third_url_id),接着根据第一标识信息(url或url_id)和第二标识信息,确定数据映射规则的索引信息,例如,索引信息可以为[第一标识信息]-[第二标识信息];然后从数据库包含的映射表中查找与该索引信息对应的数据映射规则,数据映射规则可以但不限于包括在第一应用接口程序向第二应用程序接口发送数据时,用于进行数据转换的第一数据映射规则(记为req_map)。
例如:假设第一目标应用程序接口的url为url_id_a,当确定第二目标应用程序接口的third_url_id为third_url_id_a时,首先确定数据映射规则的索引信息为[url_id_a]-[third_url_id_a],然后从如表5所示的映射表中查找到[url_id_a]-[third_url_id_a]对应的数据映射规则为req_map_1。除此之外,还可以根据[url_id_a]-[third_url_id_a]从映射表中查找到第二目标应用程序接口third_url_id_a的third_url为third_url_a、创建时间为2012-04-12以及更新时间为2018-12-09。
表5.映射表-2
需要说明的是,数据映射规则是以文件(如JSON文件)或数据对象的形式存储在数据库中的,因此可以先从映射表中查找的对应数据对象或文件的名称,如rsp_map_1,再根据名称从数据库中查找对应的数据对象或文件。
S204,代理服务器根据所述数据映射规则,将所述第一请求映射为第二请求。
具体实现中,第一请求可以是post请求或get请求。其中,post请求将请求参数以数据包的形式携带在请求中,通常将该数据包称为请求包。get请求将请求参数附加在第一目标应用程序接口的url的末尾。因此,在对第一请求进行处理之前,首先确定第一请求中是否包含请求包。若不包含,则说明为get请求,此时无需进行映射,只需根据附加于第一目标应用程序接口的url末尾的请求参数对第一请求进行合法性校验即可,校验通过后再透传第一请求。
若包含,则首先检验请求包是否合法;再根据数据映射规则中的第一数据映射规则,对第一请求携带的第一请求字段进行处理以得到第二请求,其中,在本发明实施例中post请求携带的请求包中请求参数可以是用JSON语言中的键-值对(key-value,k-v)结构来定义的请求字段。第一数据映射规则可以包括第一映射源字段路径和第一映射目的字段路径的对应关系,因此可以按照该对应关系,将第一请求携带的第一请求字段映射为第二请求字段,第二请求中包括第二请求字段。
在实际实现中,可以但不限于将第一请求字段定义成如下k-v结构,
{
"field":"opt:type:desc:default",
}
其中,"field"为k值,"opt:type:desc:default"为v值。具体的,
-field为数据对象中的顶层字段,field可以替换为顶层字段的子级路径path;
-opt是字段可选属性:必填-required;选填-optional;
-type是字段类型,支持如下类型:string、int、float、list-string、list-int、list-float,list-object-name、object和object-name,name是具体的对象名字;
-desc是对字段的描述说明,在文档的数据结构展示中使用;
-default是字段的默认值,string,int,float,list,object的默认值分别是空字符、0、0.0、[]和{};当default=null或者为空时,无默认值。
相应地,根据第一请求字段的数据结构,可以将第一数据映射规则定义为如下形式,
{
"映射源字段绝对路径":"可选属性:映射目的字段绝对路径:默认值"
}
其中,为了避免不同层级的key发生冲突,映射源字段路径和映射目的字段路径均为绝对路径。可选属性可以为必选(required)、选填(optional)和删除(delete)。当映射源中某些字段不存在时,则使用默认值,否则,使用实际数据,既无默认值又无数据时忽略此字段。
例如:如表6所示,第一请求中携带的第一请求字段包括"Id":"97.8"、"name":"XX"。第一数据映射规则中的映射源字段路径"req/Id"为"97.8"的绝对路径、"req/name"为"XX"的绝对路径。因此,可以将"Id":"97.8"按照"req/Id"对应的映射目的字段路径"/Req/fre"和可选属性"required/string"映射为的第二请求字段"fre":"97.8"、以及将"name":"XX"按照"req/name"对应的映射目的字段路径"Req/title"和可选属性"required/string"映射为第二请求字段"title":"XX",从而得到第二请求"Req":{"fre":"97.8","title":"XX",}。
需要说明的是,数据映射规则是以数据对象或文件(如JSON)的形式存储因此可以首先确定数据对象或文件是否为空,即第一数据映射规则是否为空,若不为空,则对第一请求的处理操作,否则,可以认为第一目标应用程序接口和第二目标应用程序接口之间的数据结构是适配的,则直接透传第一请求。
表6.数据映射-1
S205,代理服务器向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
具体实现中,可以首先从数据库中查找第二目标应用程序接口的请求方式,其中,请求方式包括post方式和get方式。然后按照查找到的请求方式,向第二目标应用程序接口发送第二请求。第二目标应用程序接口则可以解析第二请求,并根据第二请求的解析结果从对应的第三方服务器中获取服务数据,如天气预报信息、歌曲的播放文件和电台信息等。
在本发明实施例中,首先接收该服务系统中的服务平台包含的多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,该第一请求携带所述第一目标应用程序接口的第一标识信息;接着根据第一标识信息,确定该服务系统中的多个第三方服务器对应的多个第二应用程序接口中的第二目标应用程序接口、以及确定第一目标应用程序接口和第二目标应用程序接口之间的数据映射规则;然后根据数据映射规则,将第一请求映射为第二请求;最后向第二目标应用程序接口发送第二请求,该第二请求用于向第二目标应用程序接口请求数据。通过上述方法,在第一目标应用程序接口和第二目标应用程序接口的接口协议和数据结构不同时,仍然可以使这两个应用程序接口顺利对接,即实现了通用的应用程序接口对接方法,提高了第三方服务接口的利用率。此外,通过在代理服务器中设置数据库用以存储与该代理服务器相关联的所有应用程序接口信息的方法,可以有效提高应用程序接口管理的便捷性和高效性。
请参见图3,图3是本发明实施例提供的另一种数据请求方法的流程示意图,如图所示,该方法包括但不限于如下步骤:
S301,第一目标应用程序向代理服务器发送第一请求。所述第一请求携带第一目标应用程序接口的第一标识信息。
具体实现中,第一目标应用程序接口所属的服务平台包括多个第一应用程序接口,第一目标应用程序接口包含于多个第一应用程序接口。其中,该服务平台当检测到针对第一目标应用程序接口的访问请求时,可以首先判断该访问请求的发起方(如用户、其他设备或模块等)是否具有访问第一目标应用程序接口的权限、以及第一目标应用程序接口当前的服务状态是否正常、以及第一目标应用程序接口的访问频率是否超过预设阈值,其中,访问频率可以是指预设时间段内的访问频率,如过去的1分钟内的访问频率。若发起方具有访问权限、且第一目标应用程序接口的服务状态正常、且访问频率未超过预设阈值,则服务平台指示第一目标应用程序接口向代理服务器发送第一请求。其中,第一标识信息可以但不限于为第一目标应用程序接口的地址信息,如url。
可选的,还可以将请求发起方的身份信息携带在第一请求之中,由代理服务器来校验访问权限,若请求发起方具有访问第一目标应用程序接口的权限,代理服务器再执行后续操作。
可选的,还可以由代理服务器在接口到第一请求后,检验第一目标应用程序接口的访问频率是否超过预设阈值,若否,则执行后续操作,若是,则向目标应用程序接口反馈错误信息。
S302,代理服务器根据第一标识信息,确定多个第二应用程序接口中的第二目标应用程序接口。本步骤与上一实施例中的S202相同,本步骤不再赘述。
S303,代理服务器确定第一目标应用程序接口和第二目标应用程序接口之间的数据映射规则。所述数据映射规则包括第一数据映射规则和第二数据映射规则。
具体实现中,可以首先确定第二目标应用程序接口的第二标识信息(third_url或third_url_id),接着根据第一标识信息(url或url_id)和第二标识信息,确定数据映射规则的索引信息,例如,索引信息可以为[第一标识信息]-[第二标识信息]。然后从数据库包含的映射表中查找与该索引信息对应的数据映射规则,其中,数据映射规则可以包括第一数据映射规则(记为req_map)和第二数据映射规则(记为rsp_map)。其中,当第一应用程序接口向第二应用程序接口发送数据时,可以使用req_map对该数据进行处理以便第二应用程序接口识别该数据。当第二应用程序接口向第一应用程序接口发送数据时,可以使用rsp_map对该数据进行处理以便第一应用程序接口识别该数据。数据映射规则还可以包括第三数据映射规则(记为error_map),当数据请求失败时可以使用error_map生成错误信息。
S304,代理服务器根据第一数据映射规则,将第一请求映射为第二请求。本步骤与上一实施例中的S204相同,本步骤不再赘述。
S305,代理服务器向第二目标应用程序接口发送第二请求。
S306,第二目标应用程序接口获取第二请求对应的第一请求响应信息。
具体实现中,第二目标应用程序接口可以从第二请求携带的请求字段中解析出请求参数,如天气查询的目的地、歌曲的名称和电台的广播频率等等。然后根据请求参数从对应的第三方服务器中获取第一请求响应信息,如天气数据、歌曲的播放文件和电台信息等。
S307,第二目标应用程序接口向代理服务器发送第一请求响应信息。
S308,代理服务器根据第二数据映射规则,将第一请求响应信息映射为第二请求响应信息。
具体实现中,第一请求响应信息将以数据包的形式传递到代理服务器,通常将其称为回复包。其中,可以但不限于基于k-v结构将第一请求响应信息定义成如下形式,
{
"Response":"required:object-name:回复包体",
}
其中,name为回复包体对应的数据对象的名称,回复包体包括多个满足k-v结构的第一响应字段。例如,在为用户提供电台查询服务时,回复包体中可以包括电台的关键字、收听人数和电台主题等信息。此外,第一请求响应信息中还可以包括"RequestId":"required:string:请求标识",请求标识可以为第一目标应用程序接口的标识信息(如url或url_id),"RequestId":"required:string:请求标识"用于指明第一请求响应信息所针对的数据请求的来源。其中,第二数据映射规则与第一数据映射规则的形式相同,将第一请求响应信息映射为第二请求响应信息的方法也与将第一请求映射为第二请求的方法类似。第二数据映射规中包括第二映射源字段路径和第二映射目的字段路径的对应关系,因此可以根据该对应关系将第一请求响应信息中的第一响应字段映射为第二响应字段,第二请求响应信息中包括该第二响应字段。
例如:如下表7所示,第一请求响应信息中携带的第一响应字段"code":"0"、"message":"success"以及"data":{"user":"xyz","name":"pear",}。第二数据映射规则中的映射源字段路径"/rsp/code"为"0"的绝对路径。因此,可以将"code":"0"按照"/rsp/code"对应的"required:int:/Rsp/Ret:default"映射为的第二响应字段"Ret":0。以此类推,可以将第一响应字段"message":"success"和"data":{"user":"xyz","name":"pear",}分别映射为"Msg":"success"和"Data":{"User":"pear",},从而得到第二请求响应信息"Rsp":{"Ret":0,"Msg":"success","Data":{"User":"pear",}}。
表7.数据映射-2
需要说明的是,在上述数据映射过程中,针对如"data":{"user":"xyz","name":"pear",}所示的嵌套对象的k-v结构,还可以将其中的key值由field替换为path、例如,可以将KeyWord:{type:1,name:k}表示为
"KeyWords":"required:object:关键字对象",
"KeyWords/type":"required:int:关键字-类型:0",
"KeyWords/name":"required:string:关键字-名称"
其中,嵌套对象越深path越长,因此嵌套对象一般不超过两层。
此外,当第一请求响应信息的数据量比较大时,若针对其中包含的每个第一响应字段进行映射,则映射过程所消耗的时间将使整个服务系统的服务效率降低。为了避免这一情况的发生,可以预先限定第一请求响应信息中需要映射的重要字段,其他字段则保持结构不变,直接透传。
可选的,代理服务器在向第二目标应用程序接口发送第二请求之后,还可以确定等待第一请求响应信息的累积时长,并当累积时长超过预设阈值,即第二目标应用程序在预设时长内未返回请求响应信息时,确定数据请求失败。接着,代理服务器可以根据第三协议映射规则生成错误信息,其中,代理服务器可以先按照该服务器的数据结构/协议生成表示数据请求失败的错误信息,再根据第三数据映射规则,将该错误信息映射为第一目标应用程序接口可识别的错误信息,其中,第三数据映射规则可以但不限于按照与第一和第二数据映射规则相同的数据结构进行定义。然后将映射得到的错误信息发送给第一目标应用程序接口,服务平台则可以根据该错误信息,显示提示信息(如错误码)以提示用户数据请求失败/服务失败、以及失败的原因。
S309,代理服务器向第一目标应用程序接口发送第二请求响应信息。
S310,第一目标应用程序接口接收代理服务器发送的第二请求响应信息,所述第二请求响应信息用于指示服务平台为用户提供服务。
具体实现中,第一目标应用程序接口所属的服务平台可以从第二请求响应信息中解析出服务数据,并在显示界面上展示该服务数据以便用户查看。
例如:第二请求响应信息为
则服务平台可以首先从中解析出用户所查询的电台Apple的简介“为你推荐科学健康的生活方式”、电子身份标识“1200000000241”、电台徽标(logo)的图片地址“http://xxx/default.jpg”、关键词“健康”和“生活”以及收听该电台的人数“83809”;接着根据http://xxx/default.jpg获取对应的图片;然后,如图4所示,在显示界面上展示上述信息,同时还可以在显示界面上设置收听电台的功能按键,当检测到用户点击“立即收听”时,为用户播放该电台所广播内容。
最后需要补充说明的是,以上提及的所有数据映射规则包含了如表8所示的字符类型转换规则。以字符串型(string)的映射源字段为例,该映射源目的字段可以被映射为string型、整型(int)、浮点(float)字符串型的映射目的字段;也可以将映射源字段作为一个元素映射为列表(list)型的映射目的字段;还可以映射为一个{“0”:string}形式的对象(object)。其他类型的映射源字段对应的类型转换规则也可以从表8中获取。例如,list型的映射源字段不能被转换为int和float型的映射目的字段。
表8.字符类型转换规则
在本发明实施例中,代理服务器在接收到服务平台中的第一目标应用程序接口发送的数据请求时,根据该第一应用程序接口的标识信息,多个第三方服务器包括的多个第二目标应用程序接口中确定与该第一应用程序接口对接的第二目标应用程序接口。其中,第一目标应用程序接口可以是该服务平台所包括的多个第一应用程序接口中的任意一个。接着确定第一目标应用程序接口和第二目标应用程序接口之间的数据映射规则。然后根据该数据映射规则对第一目标应用程序接口和第二目标应用程序接口之间的交互数据进行处理,以使该交互数据被对方识别,其中,交互数据包括第一目标应用程序接口和第二目标应用程序接口之间发送的数据请求以及第二目标应用程序接口发送的针对该数据请求的响应信息。可以实现接口协议和数据结构不同的应用程序接口之间的顺利对接。
上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的相关设备。
请参见图5,图5是本发明实施例提供的一种代理服务器的结构示意图,该代理服务器可以包括:
接收模块501,用于接收所述多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息。
具体实现中,所述多个第一应用程序接口属于代理服务器所在的服务系统中的服务平台,第一目标应用程序接口可以是多个第一应用程序接口中的任一个。其中,第一标识信息可以但不限于为第一目标应用程序接口的地址信息,如url。该服务平台当检测到用户/其他设备/模块等请求发起方针对第一目标应用程序接口的访问请求时,指示第一目标应用程序接口向代理服务器发送第一请求。
可选的,第一请求可以携带请求发起方的身份信息,接收模块501还用于根据该身份信息来校验请求发起方对第一目标应用程序的访问权限,若请求发起方具有访问第一目标应用程序接口的权限,则执行后续操作或驱动代理服务器的其他模块执行相关操作。
可选的,接收模块501还用于检验第一目标应用程序接口的访问频率是否超过预设阈值,若否,则执行后续操作或驱动代理服务器的其他模块执行相关操作,若是,则向目标应用程序接口反馈错误信息。其中,访问频率可以是指预设时间段内的访问频率,如过去的1分钟内的访问频率.
此外,为了便于管理和查询API的相关信息,本发明实施例中的代理服务器还可以包括API管理模块,用于建立一个用于存储第一应用程序接口、第二应用程序接口、第三方服务提供商(CP/SP)、服务平台的相关信息以及第一应用程序接口和第二应用程序接口之间的映射信息的数据库。
例如,如表1所示,针对每个API,数据库中可以但不限于包括它的全局ID、url、url的摘要值(url_id)、访问频率的预设阈值(freq)、请求方式(type)、功能信息(func)、简介(intro)、错误码(error)、请求包体的说明信息(req_body_id)、回复包体的说明信息(rsp_body_id)、请求包体示例(req_example_id)、回复包体示例(rsp_example_id)、所属的功能模块的标识(module_id)、服务状态信息(status)、创建时间(create_time)和更新时间(update_time)。其中,全局ID可以是代理服务器为API在分配的唯一标识。url_id可以但不限于为url的哈希值(url_hash_id)。
又如,如表2所示,针对每个CP/SP,数据库中可以包括代理服务器为其分配的ID、该CP/SP所属的公司以及该公司的联系方式。
又如,为了实现API的模块化管理,在数据库中录入服务平台的每个模块的信息,如表3所示,服务平台XX包括两个功能模块,功能模块8091的name为“天气查询模块”,用于描述该功能模块的功能、创建时间(create_time)为2017-09-23以及更新时间(update_time)为2018-12-17、对应的线上主机(online_host)的地址为192.168.1.1/24、测试主机(test_host)的地址为192.168.1.1/24。除此之外,表3中还包括功能模块5634的name、create_time、update_time、online_host的地址以及test_host地址。
基于上述数据库,API管理模块可以根据API的ID/url/url_id,查询该API的详细信息,并将req_body_id、rsp_body_id,req_example_id和rsp_example_id按照可读的方式进行组合并生成开发文档,例如,可以生成html或pdf文档。当某个API发生变化时,API管理模块依据该API的ID/url/url_id相应部分的信息,以及更新该API的开发文档中的对应部分,从而可以方便地对各个API口进行增删改查,使得API的管理更加轻松自由。
可选的,本发明实施例中的代理服务器还可以包括API监测模块,用于监测并统计整个服务系统中API的运营数据。其中,API运营检测模块可以包括以下功能:(1)生成接口调用总览图,该总览图可以包括与该代理服务器相关联的每个API的调用情况;(2)针对每个API,生成接口的实时调用曲线图、以及每周/月的调用曲线图;(3)统计每个API的流量;(4)当API的接口流量达到峰值时,发出告警信息;(5)根据每个用户/设备的请求服务数据,统计大客户的信息;(6)针对服务平台中每个模块,统计API数据。
可选的,本发明实施例中的代理服务器还可以包括API控制模块,用于控制API的服务状态,并向用户展示API暂停、启用和访问统计数据,以便在某个API出现异常时,提示用户屏蔽该API的访问,等待其修复后再重新启用。API控制模块还可以向提供用户其API调用服务的用量统计信息,方便用户感知自己的业务请求量。
确定模块502,用于根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口。
具体实现中,可以首先从数据库中查找与第一标识信息对应的第二标识信息,其中,数据库中可以包括映射表,该映射表包含第一标识信息(url或url_id)与第二标识信息的对应关系。其中,第二标识信息可以为第二目标应用程序接口的url或url_id。为了区别,不妨将第二目标应用程序接口的url和url_hash_id分别记为third_url和third_url_id;然后根据查找到的第二标识信息,确定第二目标应用程序接口。
为了提高服务平台的容灾能力,可以首先根据第一标识信息,确定多个第二应用程序接口中的多个候选应用程序接口;接着确定多个候选应用程序接口中每个候选应用程序接口的应用优先级,其中,可以从数据库中查找每个候选应用程序接口的创建时间/更新时间,并根据更新时间/创建时间确定应用优先级;然后根据应用优先级,从多个候选应用程序中确定第二目标应用程序接口。其中,还可以从数据库查询每个候选应用程序接口的服务状态,再将应用优先级最高且服务状态为正常的候选应用程序接口确定为第二目标应用程序接口。在上述方法中,当某个候选应用程序接口不可用时,可以立即切换到另外一个候选应用程序接口获取服务数据,从而有效避免第三方应用程序接口不可用而导致服务失败的问题。
可选的,url_id和third_url_id可以为整形值,因此还可以根据url_id和third_url_id相除的余数,从多个候选应用程序接口中确定第二目标应用程序接口,其中,可以但不限于将余数最小或余数为预设值的候选应用程序接口确定为第二目标应用程序接口。
可选的,由于url的长度较长,为了提高查询效率,可以首先确定所述第一标识信息的摘要值,其中,当第一标识信息为url时,可以计算url的哈希值作为摘要值(url_id);接着从数据库中查找该摘要值对应的第二标识信息;然后根据第二标识信息确定第二目标应用程序接口。其中,为了保证信息查询的准确性,还可以根据url_id从数据库(如表1)中查询第一目标应用程序接口的url,并将查询到的url与第一请求中携带的url进行匹配。若两者相同,则确定信息查询准确并执行后续操作。否则,确定信息查询有误并返回错误信息。
确定模块502,还用于确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则。
具体实现中,可以首先确定第二目标应用程序接口的第二标识信息(third_url或third_url_id),接着根据第一标识信息(url或url_id)和第二标识信息,确定数据映射规则的索引信息,例如,索引信息可以为[第一标识信息]-[第二标识信息]。然后从数据库包含的映射表中查找与该索引信息对应的数据映射规则,其中,数据映射规则可以包括第一数据映射规则(记为req_map)和第二数据映射规则(记为rsp_map)。其中,当第一应用程序接口向第二应用程序接口发送数据时,可以使用req_map对该数据进行处理以便第二应用程序接口识别该数据。当第二应用程序接口向第一应用程序接口发送数据时,可以使用rsp_map对该数据进行处理以便第一应用程序接口识别该数据。数据映射规则还可以包括第三数据映射规则(记为error_map),当数据请求失败时,可以使用error_map生成错误信息。
映射模块503,用于根据所述数据映射规则,将所述第一请求映射为第二请求。
具体实现中,第一请求可以是post请求或get请求。其中,post请求将请求参数以数据包的形式携带在请求中,通常将该数据包称为请求包。get请求将请求参数附加在第一目标应用程序接口的url的末尾。因此,在对第一请求进行处理之前,首先确定第一请求中是否包含请求包。若不包含,则说明为get请求,此时无需进行映射,只需根据附加于第一目标应用程序接口的url末尾的请求参数对第一请求进行合法性校验即可,校验通过后再透传第一请求。
若包含,则首先检验请求包是否合法;再根据数据映射规则中的第一数据映射规则,对第一请求携带的第一请求字段进行处理以得到第二请求,其中,在本发明实施例中post请求携带的请求包中请求参数可以是用JSON语言中的k-v结构来定义的请求字段。第一数据映射规则可以包括第一映射源字段路径和第一映射目的字段路径的对应关系,因此可以按照该对应关系,将第一请求携带的第一请求字段映射为第二请求字段,第二请求中包括第二请求字段。
在实际实现中,可以但不限于将第一请求字段定义成如下k-v结构,
{
"field":"opt:type:desc:default",
}
相应地,根据第一请求字段的数据结构,可以将第一数据映射规则定义为如下形式,
{
"映射源字段绝对路径":"可选属性:映射目的字段绝对路径:默认值"
}
其中,为了避免不同层级的key发生冲突,映射源字段路径和映射目的字段路径均为绝对路径。可选属性可以为必选(required)、选填(optional)和删除(delete)。当映射源中某些字段不存在时,则使用默认值,否则,使用实际数据,既无默认值又无数据时忽略此字段。
需要说明的是,数据映射规则是以数据对象或文件(如JSON)的形式存储因此可以首先确定数据对象或文件是否为空,即第一数据映射规则是否为空,若不为空,则对第一请求的处理操作,否则,可以认为第一目标应用程序接口和第二目标应用程序接口之间的数据结构是适配的,则直接透传第一请求。
发送模块504,用于向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
具体实现中,可以首先从数据库中查找第二目标应用程序接口的请求方式,其中,请求方式包括post方式和get方式。然后按照查找到的请求方式,向第二目标应用程序接口发送第二请求。第二目标应用程序接口则可以解析第二请求,并根据第二请求的解析结果从对应的第三方服务器中获取服务数据,如天气预报信息、歌曲的播放文件和电台信息等。
可选的,接收模块501还用于接收第二目标应用程序接口发送的第一请求响应信息。
具体实现中,第二目标应用程序接口可以从第二请求携带的请求字段中解析出请求参数,如天气查询的目的地、歌曲的名称和电台的广播频率等等。然后根据请求参数从对应的第三方服务器中获取第一请求响应信息,如天气数据、歌曲的播放文件和电台信息等。
可选的,映射模块503还用于根据第二数据映射规则,将第一请求响应信息映射为第二请求响应信息。
具体实现中,第一请求响应信息将以数据包的形式传递到代理服务器,通常将其称为回复包。其中,可以但不限于基于k-v结构将第一请求响应信息定义成如下形式,
{
"Response":"required:object-name:回复包体"
}
其中,name为回复包体对应的数据对象的名称,回复包体包括多个满足k-v结构的第一响应字段。例如,在为用户提供电台查询服务时,回复包体中可以包括电台的关键字、收听人数和电台主题等信息。此外,第一请求响应信息中还可以包括"RequestId":"required:string:请求标识",请求标识多个为第一目标应用程序接口的标识信息(如url或url_id),"RequestId":"required:string:请求标识"用于指明第一请求响应信息所针对的数据请求的来源。其中,第二数据映射规则与第一数据映射规则的形式相同,将第一请求响应信息映射为第二请求响应信息的方法也与将第一请求映射为第二请求的方法类似。第二数据映射规中包括第二映射源字段路径和第二映射目的字段路径的对应关系,因此可以根据该对应关系将第一请求响应信息中的第一响应字段映射为第二响应字段,第二请求响应信息中包括该第二响应字段。
需要说明的是,在上述数据映射过程中,针对如"data":{"user":"xyz","name":"pear",}所示的嵌套对象的k-v结构,还可以将其中的key值由field替换为path、例如,可以将KeyWord:{type:1,name:k}表示为
"KeyWords":"required:object:关键字对象",
"KeyWords/type":"required:int:关键字-类型:0",
"KeyWords/name":"required:string:关键字-名称"
其中,嵌套对象越深path越长,因此嵌套对象一般不超过两层。
此外,当第一请求响应信息的数据量比较大时,若针对其中包含的每个第一响应字段进行映射,则映射过程所消耗的时间将使整个服务系统的服务效率降低。为了避免这一情况的发生,可以预先限定第一请求响应信息中需要映射的重要字段,其他字段则保持结构不变,直接透传。
可选的,在向第二目标应用程序接口发送第二请求之后,映射模块503还可以确定等待第一请求响应信息的累积时长,并当累积时长超过预设阈值,即第二目标应用程序在预设时长内未返回请求响应信息时,确定数据请求失败。接着,根据第三协议映射规则生成错误信息,其中,可以先按照该服务器的数据结构/协议生成表示数据请求失败的错误信息,再根据第三数据映射规则,将该错误信息映射为第一目标应用程序接口可识别的错误信息,其中,第三数据映射规则可以但不限于按照与第一和第二数据映射规则相同的数据结构进行定义。然后发送模块504将映射得到的错误信息发送给第一目标应用程序接口,以便第一目标应用程序接口所属的服务平台根据该错误信息,显示提示信息(如错误码),提示用户数据请求失败/服务失败、以及失败的原因。
可选的,发送模块504还用于向第一目标应用程序接口发送第二请求响应信息,所述第二请求响应信息用于指示服务平台为用户提供服务。
具体实现中,第一目标应用程序接口所属的服务平台可以从第二请求响应信息中解析出服务数据,并在显示界面上展示该服务数据以便用户查看。
在本发明实施例中,代理服务器在接收到服务平台中的第一目标应用程序接口发送的数据请求时,根据该第一应用程序接口的标识信息,多个第三方服务器包括的多个第二目标应用程序接口中确定与该第一应用程序接口对接的第二目标应用程序接口。其中,第一目标应用程序接口可以是该服务平台所包括的多个第一应用程序接口中的任意一个。接着确定第一目标应用程序接口和第二目标应用程序接口之间的数据映射规则。然后根据该数据映射规则对第一目标应用程序接口和第二目标应用程序接口之间的交互数据进行处理,以使该交互数据被对方识别,其中,交互数据包括第一目标应用程序接口和第二目标应用程序接口之间发送的数据请求以及第二目标应用程序接口发送的针对该数据请求的响应信息。可以实现接口协议和数据结构不同的应用程序接口之间的顺利对接。同时,API管理模块和监测模块的配置也使得应用程序接口管理变得高效便捷。
请参见图6,图6是本发明实施例提供的另一种代理服务器的结构示意图。如图所示,该代理服务器可以包括:至少一个处理器601,至少一个通信接口602,至少一个存储器603和至少一个通信总线604。
其中,处理器601可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线604可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线604用于实现这些组件之间的连接通信。其中,本发明实施例中设备的通信接口602用于与其他节点设备进行信令或数据的通信。存储器603可以包括易失性存储器,例如非挥发性动态随机存取内存(Nonvolatile Random Access Memory,NVRAM)、相变化随机存取内存(PhaseChange RAM,PRAM)、磁阻式随机存取内存(Magetoresistive RAM,MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、闪存器件,例如反或闪存(NORflash memory)或是反及闪存(NAND flash memory)、半导体器件,例如固态硬盘(SolidState Disk,SSD)等。存储器603可选的还可以是至少一个位于远离前述处理器601的存储装置。存储器603中存储一组程序代码,且处理器601执行存储器603中的程序:
接收所述多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息;
根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口;
确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则;
根据所述数据映射规则,将所述第一请求映射为第二请求;
向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
可选的,所述第一请求携带第一请求字段;
所述数据映射规则包括第一数据映射规则,所述第一数据映射规则包括第一映射源字段路径和第一映射目的字段路径的对应关系;
处理器601还用于执行如下操作步骤:
按照所述第一映射源字段路径和所述第一映射目的字段路径的对应关系,将所述第一请求字段映射为第二请求字段,所述第二请求包括所述第二请求字段。
可选的,所述数据映射规则包括第二数据映射规则;
处理器601还用于执行如下操作步骤:
接收所述第二目标应用程序接口发送的第一请求响应信息;
根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息;
向所述第一目标应用程序接口发送所述第二请求响应信息,所述第二请求响应信息用于指示所述服务平台为用户提供服务。
可选的,所述第二数据映射规则包括第二映射源字段路径和第二映射目的字段路径的对应关系;所述第一请求响应信息包括第一响应字段;
处理器601还用于执行如下操作步骤:
按照所述第二映射源字段路径和所述第二映射目的字段路径的对应关系,将所述第一响应字段映射为第二响应字段,所述第二请求响应信息包括所述第二响应字段。
可选的,处理器601还用于执行如下操作步骤:
确定所述第二目标应用程序接口的第二标识信息;
根据所述第一标识信息和所述第二标识信息,确定索引信息;
从预设的映射表中查找与所述索引信息对应的所述数据映射规则,所述映射表包括所述索引信息与所述数据映射规则的对应关系。
可选的,处理器601还用于执行如下操作步骤:
根据所述第一标识信息,确定所述多个第二应用程序接口中的多个候选应用程序接口;
确定所述多个候选应用程序接口中每个候选应用程序接口的应用优先级;
根据所述应用优先级,从所述多个候选应用程序接口中确定所述第二目标应用程序接口。
可选的,处理器601还用于执行如下操作步骤:
确定所述第一标识信息的摘要值;
根据所述摘要值,确定所述第二目标应用程序接口。
可选的,所述数据映射规则还包括第三数据映射规则;
处理器601还用于执行如下操作步骤:
确定等待所述第一请求响应信息的累积时长;
当所述累积时长超过第一预设阈值时,根据所述第三数据映射规则生成错误信息;
向所述第一目标应用程序接口发送所述错误信息,所述错误信息用于指示所述服务平台显示提示信息。
可选的,处理器601还用于执行如下操作步骤:
确定所述第一目标应用程序接口的访问频率;
当所述访问频率不超过第二预设阈值时,执行所述根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口的操作。
进一步的,处理器还可以与存储器和通信接口相配合,执行上述发明实施例中代理服务器的操作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种数据请求方法,其特征在于,所述方法应用于服务系统,所述服务系统包括代理服务器、服务平台和多个第三方服务器,所述服务平台包括多个第一应用程序接口,所述多个第三方服务器包括多个第二应用程序接口,所述方法包括:
所述代理服务器接收所述多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息;
所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口;
所述代理服务器确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则;
所述代理服务器根据所述数据映射规则,将所述第一请求映射为第二请求;
所述代理服务器向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
2.如权利要求1所述的方法,其特征在于,所述第一请求携带第一请求字段;
所述数据映射规则包括第一数据映射规则,所述第一数据映射规则包括第一映射源字段路径和第一映射目的字段路径的对应关系;
所述代理服务器根据所述数据映射规则,将所述第一请求映射为第二请求包括:
所述代理服务器按照所述第一映射源字段路径和所述第一映射目的字段路径的对应关系,将所述第一请求字段映射为第二请求字段,所述第二请求包括所述第二请求字段。
3.如权利要求1所述的方法,其特征在于,所述数据映射规则包括第二数据映射规则;
所述代理服务器向所述第二目标应用程序接口发送所述第二请求之后,还包括:
所述代理服务器接收所述第二目标应用程序接口发送的第一请求响应信息;
所述代理服务器根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息;
所述代理服务器向所述第一目标应用程序接口发送所述第二请求响应信息,所述第二请求响应信息用于指示所述服务平台为用户提供服务。
4.如权利要求3所述的方法,其特征在于,所述第二数据映射规则包括第二映射源字段路径和第二映射目的字段路径的对应关系;所述第一请求响应信息包括第一响应字段;
所述代理服务器根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息包括:
所述代理服务器按照所述第二映射源字段路径和所述第二映射目的字段路径的对应关系,将所述第一响应字段映射为第二响应字段,所述第二请求响应信息包括所述第二响应字段。
5.如权利要求1所述的方法,其特征在于,所述代理服务器确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则包括:
所述代理服务器确定所述第二目标应用程序接口的第二标识信息;
所述代理服务器根据所述第一标识信息和所述第二标识信息,确定索引信息;
所述代理服务器从预设的映射表中查找与所述索引信息对应的所述数据映射规则,所述映射表包括所述索引信息与所述数据映射规则的对应关系。
6.如权利要求1所述的方法,其特征在于,所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口包括:
所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的多个候选应用程序接口;
所述代理服务器确定所述多个候选应用程序接口中每个候选应用程序接口的应用优先级;
所述代理服务器根据所述应用优先级,从所述多个候选应用程序接口中确定所述第二目标应用程序接口。
7.如权利要求1所述的方法,其特征在于,所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口包括:
所述代理服务器确定所述第一标识信息的摘要值;
所述代理服务器根据所述摘要值,确定所述第二目标应用程序接口。
8.如权利要求3所述的方法,其特征在于,所述数据映射规则还包括第三数据映射规则;
所述代理服务器向所述第二目标应用程序接口发送所述第二请求之后,还包括:
所述代理服务器确定等待所述第一请求响应信息的累积时长;
所述代理服务器当所述累积时长超过第一预设阈值时,根据所述第三数据映射规则生成错误信息;
所述代理服务器向所述第一目标应用程序接口发送所述错误信息,所述错误信息用于指示所述服务平台显示提示信息。
9.如权利要求1-8任一项所述的方法,其特征在于,所述代理服务器根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口之前,还包括:
所述代理服务器确定所述第一目标应用程序接口的访问频率;
所述代理服务器当所述访问频率不超过第二预设阈值时,执行所述根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口的操作。
10.一种代理服务器,其特征在于,所述代理服务器所属的服务系统包括服务平台和多个第三方服务器,所述服务平台包括多个第一应用程序接口,所述多个第三方服务器包括多个第二应用程序接口,所述代理服务器包括:
接收模块,用于接收所述多个第一应用程序接口中的第一目标应用程序接口发送的第一请求,所述第一请求携带所述第一目标应用程序接口的第一标识信息;
确定模块,用于根据所述第一标识信息,确定所述多个第二应用程序接口中的第二目标应用程序接口;
所述确定模块,还用于确定所述第一目标应用程序接口和所述第二目标应用程序接口之间的数据映射规则;
映射模块,用于根据所述数据映射规则,将所述第一请求映射为第二请求;
发送模块,用于向所述第二目标应用程序接口发送所述第二请求,所述第二请求用于向所述第二目标应用程序接口请求数据。
11.如权利要求10所述的代理服务器,其特征在于,所述第一请求携带第一请求字段;
所述数据映射规则包括第一数据映射规则,所述第一数据映射规则包括第一映射源字段路径和第一映射目的字段路径的对应关系;
所述映射模块还用于:
按照所述第一映射源字段路径和所述第一映射目的字段路径的对应关系,将所述第一请求字段映射为第二请求字段,所述第二请求包括所述第二请求字段。
12.如权利要求10所述的代理服务器,其特征在于,所述数据映射规则包括第二数据映射规则;
所述接收模块还用于:
接收所述第二目标应用程序接口发送的第一请求响应信息;
所述映射模块还用于:
根据所述第二数据映射规则,将所述第一请求响应信息映射为第二请求响应信息;
所述发送模块还用于:
向所述第一目标应用程序接口发送所述第二请求响应信息,所述第二请求响应信息用于指示所述服务平台为用户提供服务。
13.如权利要求12所述的代理服务器,其特征在于,所述第二数据映射规则包括第二映射源字段路径和第二映射目的字段路径的对应关系;所述第一请求响应信息包括第一响应字段;
所述映射模块还用于:
按照所述第二映射源字段路径和所述第二映射目的字段路径的对应关系,将所述第一响应字段映射为第二响应字段,所述第二请求响应信息包括所述第二响应字段。
14.如权利要求10所述的代理服务器,其特征在于,所述确定模块还用于:
确定所述第二目标应用程序接口的第二标识信息;
根据所述第一标识信息和所述第二标识信息,确定索引信息;
从预设的映射表中查找与所述索引信息对应的所述数据映射规则,所述映射表包括所述索引信息与所述数据映射规则的对应关系。
15.如权利要求10所述的代理服务器,其特征在于,所述确定模块还用于:
根据所述第一标识信息,确定所述多个第二应用程序接口中的多个候选应用程序接口;
确定所述多个候选应用程序接口中每个候选应用程序接口的应用优先级;
根据所述应用优先级,从所述多个候选应用程序接口中确定所述第二目标应用程序接口。
CN201910169627.2A 2019-03-06 2019-03-06 一种数据请求方法及相关设备 Active CN110209505B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910169627.2A CN110209505B (zh) 2019-03-06 2019-03-06 一种数据请求方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910169627.2A CN110209505B (zh) 2019-03-06 2019-03-06 一种数据请求方法及相关设备

Publications (2)

Publication Number Publication Date
CN110209505A true CN110209505A (zh) 2019-09-06
CN110209505B CN110209505B (zh) 2024-06-25

Family

ID=67785268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910169627.2A Active CN110209505B (zh) 2019-03-06 2019-03-06 一种数据请求方法及相关设备

Country Status (1)

Country Link
CN (1) CN110209505B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111083657A (zh) * 2019-12-27 2020-04-28 广州骏伯网络科技有限公司 一种手机流量充值方法和装置
CN111080420A (zh) * 2019-12-30 2020-04-28 广州骏伯网络科技有限公司 一种实现多供应商话费充值匹配的方法、系统及存储介质
CN111562994A (zh) * 2020-04-29 2020-08-21 北京达佳互联信息技术有限公司 应用程序接口转发方法、装置、电子设备及存储介质
CN112866177A (zh) * 2019-11-26 2021-05-28 浙江大搜车软件技术有限公司 处理服务调用请求的方法、装置、存储介质及计算机设备
CN113722114A (zh) * 2020-05-25 2021-11-30 北京达佳互联信息技术有限公司 一种数据服务的处理方法、装置、计算设备及存储介质
CN114928651A (zh) * 2022-05-11 2022-08-19 上海柯林布瑞信息技术有限公司 基于复杂参数识别的服务透传方法、装置及设备
CN115037531A (zh) * 2022-05-25 2022-09-09 杭州默安科技有限公司 一种未授权访问漏洞检测方法、设备、系统
CN115065723A (zh) * 2022-08-17 2022-09-16 中航信移动科技有限公司 用于网络容灾的数据处理系统
CN116089517A (zh) * 2023-03-09 2023-05-09 钛信(上海)信息科技有限公司 一种用于云平台的api接口自动构建方法及系统
CN116132385A (zh) * 2022-08-18 2023-05-16 马上消费金融股份有限公司 数据转发方法、装置、计算机设备及存储介质
CN116155922A (zh) * 2023-04-17 2023-05-23 中国工商银行股份有限公司 会话数据处理方法、装置、系统、电子设备及存储介质
US12126511B2 (en) 2020-07-31 2024-10-22 Lg Energy Solution, Ltd. Communication system and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103731427A (zh) * 2013-12-31 2014-04-16 华为技术有限公司 一种会话处理的方法、设备和系统
CN104283841A (zh) * 2013-07-02 2015-01-14 阿里巴巴集团控股有限公司 对第三方应用进行服务访问控制的方法、装置及系统
CN109088844A (zh) * 2017-06-13 2018-12-25 腾讯科技(深圳)有限公司 信息拦截方法、终端、服务器及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104283841A (zh) * 2013-07-02 2015-01-14 阿里巴巴集团控股有限公司 对第三方应用进行服务访问控制的方法、装置及系统
CN103731427A (zh) * 2013-12-31 2014-04-16 华为技术有限公司 一种会话处理的方法、设备和系统
CN109088844A (zh) * 2017-06-13 2018-12-25 腾讯科技(深圳)有限公司 信息拦截方法、终端、服务器及系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112866177A (zh) * 2019-11-26 2021-05-28 浙江大搜车软件技术有限公司 处理服务调用请求的方法、装置、存储介质及计算机设备
CN111083657A (zh) * 2019-12-27 2020-04-28 广州骏伯网络科技有限公司 一种手机流量充值方法和装置
CN111080420A (zh) * 2019-12-30 2020-04-28 广州骏伯网络科技有限公司 一种实现多供应商话费充值匹配的方法、系统及存储介质
CN111562994B (zh) * 2020-04-29 2023-10-31 北京达佳互联信息技术有限公司 应用程序接口转发方法、装置、电子设备及存储介质
CN111562994A (zh) * 2020-04-29 2020-08-21 北京达佳互联信息技术有限公司 应用程序接口转发方法、装置、电子设备及存储介质
CN113722114A (zh) * 2020-05-25 2021-11-30 北京达佳互联信息技术有限公司 一种数据服务的处理方法、装置、计算设备及存储介质
US12126511B2 (en) 2020-07-31 2024-10-22 Lg Energy Solution, Ltd. Communication system and method
CN114928651A (zh) * 2022-05-11 2022-08-19 上海柯林布瑞信息技术有限公司 基于复杂参数识别的服务透传方法、装置及设备
CN115037531A (zh) * 2022-05-25 2022-09-09 杭州默安科技有限公司 一种未授权访问漏洞检测方法、设备、系统
CN115065723B (zh) * 2022-08-17 2022-11-04 中航信移动科技有限公司 用于网络容灾的数据处理系统
CN115065723A (zh) * 2022-08-17 2022-09-16 中航信移动科技有限公司 用于网络容灾的数据处理系统
CN116132385A (zh) * 2022-08-18 2023-05-16 马上消费金融股份有限公司 数据转发方法、装置、计算机设备及存储介质
CN116089517A (zh) * 2023-03-09 2023-05-09 钛信(上海)信息科技有限公司 一种用于云平台的api接口自动构建方法及系统
CN116155922A (zh) * 2023-04-17 2023-05-23 中国工商银行股份有限公司 会话数据处理方法、装置、系统、电子设备及存储介质
CN116155922B (zh) * 2023-04-17 2023-07-04 中国工商银行股份有限公司 会话数据处理方法、装置、系统、电子设备及存储介质

Also Published As

Publication number Publication date
CN110209505B (zh) 2024-06-25

Similar Documents

Publication Publication Date Title
CN110209505A (zh) 一种数据请求方法及相关设备
CN109672608B (zh) 根据时间发送消息的方法
WO2024099256A1 (zh) 应用的安装来源确定方法、装置、可读介质及电子设备
CN109947408A (zh) 消息推送方法及装置、存储介质和电子设备
CN110019444B (zh) 一种操作请求处理方法、装置、设备及系统
CN113641713A (zh) 一种数据处理的方法和装置
CN110287049B (zh) 数据处理方法、装置和存储介质
CN113220705B (zh) 慢查询识别的方法和装置
US20140379820A1 (en) Email address and telephone number unification systems and methods
CN112558950B (zh) 系统接口生成方法及装置
CN112148847B (zh) 一种语音信息的处理方法及装置
CN114547106A (zh) 数据查询方法及装置、存储介质、计算机系统
CN113726885A (zh) 一种流量配额的调整方法和装置
KR102005932B1 (ko) 소셜 네트워크 친구 관리 서버 및 이를 이용한 소셜 네트워크 친구 관리 방법
CN111767185B (zh) 一种数据埋点方法和装置
CN109656519B (zh) 一种业务数据自动化接入方法和装置
CN112817603A (zh) 应用程序处理方法、装置、电子设备、系统和存储介质
CN110908763A (zh) 一种验收方法、装置、设备和存储介质
CN111680032A (zh) 一种处理信息发送任务的方法、装置和电子设备
CN113900895B (zh) 信息处理方法、信息处理装置、存储介质与电子设备
CN112965993B (zh) 一种数据处理系统、方法、装置及存储介质
CN111163088B (zh) 消息处理方法、系统、装置及电子设备
CN113765773B (zh) 一种沟通记录处理方法和装置
CN117951466B (zh) 数据治理方法、装置、介质和电子设备
CN113626409B (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
TG01 Patent term adjustment