API调用的动态的基于规则的变换转让专利

申请号 : CN201780096426.3

文献号 : CN111279317A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : V·杜波德洛夫J·R·克米纳尔S·奥吉哈F·L·程A·M·特拉亨伯格

申请人 : 微软技术许可有限责任公司

摘要 :

所公开的实施例提供了一种用于处理应用编程接口(API)调用的系统。在操作期间,该系统识别匹配与针对API的请求的第一表示相关联的一个或多个许可的变换规则集合。接下来,该系统将所述变换规则集合应用于该请求的第一表示中的第一字段集合以生成该请求的第二表示,其中该请求的第二表示包括不同于该第一字段集合的第二字段集合。该系统接着触发由提供该API的服务使用该第二字段集合对该请求的处理。

权利要求 :

1.一种方法,包括:

由一个或多个计算机系统识别变换规则集合,所述变换规则集合与关联于针对应用编程接口(API)的请求的第一表示的一个或多个许可相匹配;

由所述一个或多个计算机系统将所述变换规则集合应用于所述请求的所述第一表示中的第一字段集合以生成所述请求的第二表示,其中,所述请求的所述第二表示包括不同于所述第一字段集合的第二字段集合;以及触发由提供所述API的服务使用所述第二字段集合对所述请求的处理。

2.根据权利要求1所述的方法,其中,识别与关联于所述请求的所述第一表示的所述一个或多个许可相匹配的所述变换规则集合包括:将所述请求的发送方与所述一个或多个许可进行匹配;

使用所述一个或多个许可将所述请求的名称与所述服务进行匹配;以及从与所述一个或多个许可相关联的一个或多个配置获得所述变换规则集合。

3.根据权利要求2所述的方法,其中,从与所述一个或多个许可相关联的所述一个或多个配置获得所述变换规则集合包括:将与所述一个或多个配置相关联的多个变换规则集合合并成所述变换规则集合。

4.根据权利要求1所述的方法,还包括:将所述变换规则集合中的一个或多个变换规则与来自所述服务的针对所述请求的响应的第一表示进行匹配;

将所述一个或多个变换规则应用于所述响应的所述第一表示以生成所述响应的第二表示,其中,所述响应的所述第二表示包括第三字段集合;以及触发所述第三字段集合向所述请求的发送方的传输。

5.根据权利要求1所述的方法,其中,所述变换规则集合包括投影规则,所述投影规则规定针对所述请求的响应中的允许字段集合。

6.根据权利要求1所述的方法,其中,所述变换规则集合包括包容性规则,所述包容性规则规定所述请求中的允许字段集合。

7.根据权利要求1所述的方法,其中,所述变换规则集合包括验证规则,所述验证规则验证所述请求中的字段的值。

8.根据权利要求1所述的方法,其中,所述变换规则集合包括覆盖规则,所述覆盖规则覆盖所述请求中的字段的值。

9.根据权利要求1所述的方法,其中,所述变换规则集合包括插入规则,所述插入规则向所述请求中的字段中插入值。

10.根据权利要求1所述的方法,其中,所述第一字段集合包括以下中的至少一项:头部;

正文;

参数;以及

键。

11.一种存储指令的非暂时性计算机可读介质,所述指令当由处理器执行时使得所述处理器执行根据先前任一项权利要求所述的方法。

12.一种装置,包括:

一个或多个处理器;以及

存储指令的存储器,所述指令当由所述一个或多个处理器执行时使得所述装置进行以下操作:识别变换规则集合,所述变换规则集合与关联于针对应用编程接口(API)的请求的第一表示的一个或多个许可相匹配;

将所述变换规则集合应用于所述请求的所述第一表示中的第一字段集合以生成所述请求的第二表示,其中,所述请求的所述第二表示包括不同于所述第一字段集合的第二字段集合;以及触发由提供所述API的服务使用所述第二字段集合对所述请求的处理。

13.根据权利要求12所述的装置,其中,识别与关联于所述请求的所述第一表示的所述一个或多个许可相匹配的所述变换规则集合包括:将所述请求的发送方与所述一个或多个许可进行匹配;

使用所述一个或多个许可将所述请求的名称与所述服务进行匹配;以及从与所述一个或多个许可相关联的一个或多个配置获得所述变换规则集合。

14.根据权利要求13所述的装置,其中,从与所述一个或多个许可相关联的一个或多个配置获得所述变换规则集合包括:将与所述一个或多个配置相关联的多个变换规则集合合并成所述变换规则集合。

15.根据权利要求14所述的装置,其中,合并所述多个变换规则集合包括以下中的至少一项:将来自所述多个变换规则集合的多个允许属性合并成所述变换规则集合中的允许属性的单个超集;并且在合并所述多个变换规则集合之前针对冲突检查所述多个变换规则集合。

16.根据权利要求12所述的装置,其中,所述存储器还存储当由所述一个或多个处理器执行时还使得所述装置进行以下操作的指令:将所述变换规则集合中的一个或多个变换规则与来自所述服务的针对所述请求的响应的第一表示进行匹配;

将所述一个或多个变换规则应用于所述响应的所述第一表示以生成所述响应的第二表示,其中,所述响应的所述第二表示包括第三字段集合;以及触发所述第三字段集合向所述请求的发送方的传输。

17.根据权利要求12所述的装置,其中,所述变换规则集合包括以下中的至少一项:投影规则,其规定针对所述请求的响应中的允许字段集合;

包容性规则,其规定所述请求中的允许字段集合;

验证规则,其验证所述请求中的字段的值;

覆盖规则,其覆盖所述请求中的字段的值;以及插入规则,其向所述请求中的字段中插入值。

18.根据权利要求12所述的装置,其中,所述第一字段集合包括以下中的至少一项:头部;

正文;

参数;以及

键。

19.一种系统,包括:

授权模块,其包括存储指令的非暂时性计算机可读介质,所述指令当被执行时使得所述系统进行以下操作:将针对应用编程接口(API)的请求的发送方与一个或多个许可进行匹配;以及使用所述一个或多个许可将所述请求的名称与服务进行匹配;以及访问控制模块,其包括存储指令的非暂时性计算机可读介质,所述指令当被执行时使得所述系统进行以下操作:识别与所述一个或多个许可相匹配的变换规则集合;

将所述变换规则集合应用于所述请求的第一表示中的第一字段集合以生成所述请求的第二表示,其中,所述请求的所述第二表示包括不同于所述第一字段集合的第二字段集合;以及触发由提供所述API的服务使用所述第二字段集合对所述请求的处理。

20.根据权利要求19所述的系统,其中,所述变换规则集合包括以下中的至少一项:投影规则,其规定针对所述请求的响应中的允许字段集合;

包容性规则,其规定所述请求中的允许字段集合;

验证规则,其验证所述请求中的字段的值;

覆盖规则,其覆盖所述请求中的字段的值;以及插入规则,其向所述请求中的字段中插入值。

说明书 :

API调用的动态的基于规则的变换

技术领域

[0001] 所公开的实施例涉及用于处理对应用编程接口(API)的调用的技术。更具体地,所公开的实施例涉及用于执行API调用的动态的基于规则的变换的技术。

背景技术

[0002] 应用编程接口(API)一般被创建并展现以独立于软件组件或服务的实现而提供与该组件或服务相关的功能。例如,针对web资源、操作系统、数据库、和/或图形用户界面(GUI)的API可以允许其他组件使用API请求数据、存储数据、共享内容、利用特征、执行计算、和/或实行其他任务。
[0003] 另一方面,API可以与上下文、许可、服务级别协定、编程语言、协议和/或限制API的广泛采用和使用的其他属性相关联。例如,被编写供组织内部的服务使用并且与某个访问权限集合相关联的API可以针对组织外的实体和/或具有不同访问权限集合的实体展现出敏感、专有、或非描述性的数据或功能。作为结果,可能要手工创建多个版本的API以针对不同使用情形或许可来调适API的功能。

附图说明

[0004] 图1示出了根据所公开实施例的系统的示意图。
[0005] 图2示出了根据所公开实施例的用于处理针对应用编程接口(API)的调用的系统。
[0006] 图3示出了根据所公开实施例的图示出对针对API的调用的处理的流程图。
[0007] 图4示出了根据所公开实施例的图示出识别匹配与API调用相关联的许可的变换规则集合的处理的流程图。
[0008] 图5示出了根据所公开实施例的计算机系统。
[0009] 在附图中,同样的附图标记指代相同的示图元素。

具体实施方式

[0010] 呈现了以下描述以使得本领域技术人员能够制造或使用实施例,并且是在特定应用及其要求的上下文中所提供。针对所公开实施例的各种修改对于本领域技术人员将会是轻易显而易见的,并且本文所限定的原理可以被应用于其他实施例和应用而并不脱离本公开的精神或范围。因此,本发明并不限于所示出的实施例,而是要以符合本文所公开的原理和特征的最宽泛的范围为根据。
[0011] 在详细描述中加以描述的数据结构和代码通常被存储在计算机可读存储介质上,所述计算机可读存储介质可以是能够存储代码和/或数据以供计算机系统使用的任何设备和介质。该计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁性和光学存储设备(例如,磁盘驱动器、磁带、CD(压缩盘)、DVD(数字多功能盘或数字视频盘)),或者目前已知或日后研发的能够存储代码和/或数据的其他介质。
[0012] 在具体实施方式部分中描述的方法和过程可以被实施为代码和/或数据,所述代码和/或数据可以存储在如上文所描述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,该计算机系统执行被实施为数据结构和代码且存储在计算机可读存储介质内的方法和过程。
[0013] 此外,本文所描述的方法和过程可以被包括在硬件模块或装置中。这些模块或装置可以包括但并不局限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA),在特定时间执行特定软件模块或代码段的专用或共享处理器,和/或目前已知或日后研发的其他可编程逻辑器件。当所述硬件模块或装置被激活时,它们执行包括于它们之内的方法和过程。
[0014] 所公开的实施例提供了一种用于处理针对应用编程接口(API)的调用的方法、装置和系统。如图1所示,该系统包括调用处理系统102,其接收和/或拦截针对API 112的集合的请求(例如,请求1 104、请求x 106),并且调解和/或管理API 112针对该请求的响应(例如,响应1 128、响应y 130)的生成。例如,调用处理系统102可以充当请求的外部发送方与处于组织和/或其他实体内部的提供API 112的服务之间的“网关”。在另一个示例中,调用处理系统102可以充当属于与服务相同的组织但是无法直接调用API 112的应用(例如,因为该应用处于提供API 112的服务托管于其上的数据中心之外)之间的中介。作为结果,调用处理系统102可以在请求和/或响应的处理期间被用来执行认证、身份担保、访问控制、节流、数据模糊、数据抽象、上下文管理、和/或其他操作。
[0015] 更加具体地,调用处理系统102可以对与针对API 112的调用相关联的请求和/或响应中的字段114和/或与字段114相关联的数据116应用变规换则110。变换规则110的每个集合可以与被授予表示请求发送方的个人、应用和/或其他实体的一个或多个许可108相关联。例如,每个许可可以表示针对社交网络所提供的一个或多个API的访问控制配置。作为结果,该许可可以被指定给访问社交网络的应用、社交网络的成员、和/或访问社交网络的成员和应用的组合(例如,代表社交网络的认证成员访问该社交网络的应用)。
[0016] 进而,与许可相关联的变换规则110可以表示访问控制规则,所述访问控制规则被用来同意或约束针对相对应API 112的功能的访问。例如,在接收到来自发送方的请求之后,调用处理系统102可以使用变换规则110来插入、移除、过滤、验证、和/或覆盖用来发起API调用的每个请求中的字段114和/或数据116。在变换规则110被应用于请求之后,调用处理系统102可以将该请求发送至提供相对应API的服务并且从该服务接收针对该请求的响应。调用处理系统102接着可以在将响应发送至发送方之前对该响应中的字段114和/或数据应用另外的变换规则110。
[0017] 如在图2中所示,用于处理针对API 206的调用的系统(例如,图1的调用处理系统102)可以包括授权装置202和访问控制装置204。授权装置202可以通过网络连接和/或其他通信信道接收来自发送方208的请求224。例如,请求224可以是web服务和/或从客户端应用或服务所接收的超文本传输协议(HTTP)请求。
[0018] 在接收到请求224之后,授权装置202可以将发送方208与指定给发送方208的一个或多个许可108进行匹配。例如,每个许可可以被指定给表示API的调用方的一个或多个用户、应用、和/或其他实体。授权装置202可以从请求224获得发送方的认证证书(例如,OAuth或其他访问令牌),验证该认证证书是有效的(例如,没有过期或撤销),并且使用该认证证书来获取指定给发送方208的一个或多个许可。
[0019] 如上文提及的,每个许可可以包括规定API的调用方可以如何使用API的一种或多种访问控制配置。例如,该许可和/或访问控制配置可以包括和/或引用变换规则(例如,图1的变换规则110),所述变换规则对API的外部调用方对于API的模型特征的访问进行限制。
[0020] 每个许可还可以针对通过系统被访问的API来规定或引用一个或多个别名232。例如,web服务所提供的API(例如,API 206)可以被用来查询表示社交网络中的实体和关系的节点和边。该API可以由内部应用或服务使用路径“GET/networkRelationships”来调用。为了限制该API对于公共实体和关系的响应(例如,明确互相连接而并非通过共同雇主或学校隐含连接的社交网络成员),与该API相关联的许可可以包括从外部别名(例如,“GET/publicConnections”)到该路径的映射以及将针对该API的访问限制为查询公众连接和实体的变换规则。
[0021] 在针对发送方208获取到许可108之后,授权装置202可以在进一步处理请求224之前使用许可108来验证发送方208被允许通过系统访问一个或多个API。例如,授权装置202可以通过将请求224的名称与许可108中的别名相匹配并且使用该别名识别资源的相对应路径来解析提供API206的资源。授权装置202接着可以初始化调取(invocation)上下文,其标识出发送方208、许可108、和/或确定在调用API 206和/或与请求224相关联的其他API时授予发送方208的访问级别的其他参数。相反地,如果请求224的名称不匹配于与发送方208的许可108相关联的任何别名,则授权装置202可以确定该发送方尚未被授权访问与该名称相关联的任何API并且丢弃请求224。
[0022] 接下来,授权装置202和/或系统的另一个组件可以将请求224转换为包括来自请求224的字段集合(例如,字段A 228、字段B 230)的表示210。例如,该组件可以将请求224的各个分量解析成诸如树之类的数据结构。该树中的跟节点表示该请求的头部(例如,名称),并且该根节点的子节点则可以表示正文、键(例如,用户键、资源键等)、参数(例如,查询参数)和/或投影(例如,记录中要响应于请求224而被返回的具体数据元素,而不是记录中的所有数据元素)。
[0023] 访问控制装置204接着可以通过向表示210应用与指定给发送方208的许可108相关联的变换规则集合来对API 206应用访问控制。如图2所示,所述变换规则可以包括一个或多个包容性规则214、验证规则216、覆盖规则218、插入规则220、和/或投影规则222。所述变换规则可以与相对应的许可108和/或别名232一起被存储在数据库、数据仓库、云存储、文件系统、和/或提供规则库集234的其他数据存储中,或者所述变换规则可以被存储在独立于许可108和/或别名232的库集中。
[0024] 更加具体地,访问控制装置204的一个或多个组件可以使用变换规则将表示210中的字段转换成包含不同字段集合(例如,字段C 236、字段D238)的不同表示212。例如,访问控制装置204可以包括向表示210的一个或多个部分(例如,头部、正文、键、参数和/或投影)应用一种或多种类型的变换规则(例如,包容性规则214、验证规则216、覆盖规则218、插入规则220、和/或投影规则222)的一系列“访问控制模块”。每个模块可以被应用于请求224或者针对请求224的响应226,并且独立于访问控制装置204中的其他模块进行操作。换句话说,访问控制模块204中的模块可以在不互相依赖的情况下顺序和/或并行执行。作为结果,模块的执行可以以允许某些规则和/或模块优先于其他规则和/或模块的方式被配置或排序。可替代地,访问控制装置204中的一个或多个模块可以取决于访问控制模块204中的一个或多个其他模块的执行或输出。
[0025] 包容性规则214可以被用来要求和/或排除请求224中的某些字段。例如,示例性的包容性规则可以通过以下表示来指定允许字段的白名单:
[0026] NodeInclusivity:IN:Body:active,app,id,message,urn在以上表示中,“NodeInclusivity:IN:Body”被用来声明应用于请求(例如,请求224)的正文的包容性规则。该声明后跟有正文中名为“active(活动)”、“app”、“id”、“message(消息)”和“urn”的允许字段的列表。
[0027] 同样地或替代地,包容性规则214可以用来规定请求224中的要求字段的列表。继续先前的示例,示例性的包容性规则可以包括关键词、标志,或者指定请求中要求“urn”字段的其他指示符。因此,请求224可以在以下情况下被丢弃:表示210包括没有被包容性规则214列入白名单的字段和/或省略了包容性规则214所要求的任何字段。
[0028] 验证规则216可以被用来验证请求224中的字段的值。每种验证规则可以识别请求224中的一个或多个字段,以及针对(多个)字段的一个或多个允许的值。所述允许的值可以被规定为一个或多个常数值、值范围、正则表达式、数据类型,和/或对值进行运算以返回验证结果的一个或多个函数。例如,验证规则可以包括验证请求224中的键的值表示社交网络的成员的函数。如果该键的值表示另一种类型的实体和/或无效值,则请求224就会被丢弃。
[0029] 在另一个示例中,示例性验证规则可以包括以下表示:
[0030] NodeValidation:IN:Body:/adCampaigns/type(TEXT_AD)在以上表示中,“NodeValidation:IN:Body”用于规定被应用于请求的正文的验证规则。该验证规则接着标识出名为“/adCampaigns/type”的字段名以及该字段针对其有效的常数值“TEXT_AD”。因此,在该字段中包括不同值的任何请求都会验证失败并且被丢弃。
[0031] 覆盖规则218可以被用来改变请求224中的字段的值。每个覆盖规则可以识别请求224中的字段,以及要被用作请求224中该字段的当前值的替换的值。覆盖规则可以将替换值规定为常数值和/或规定为将当前值变换为替换值的函数。如果该字段在请求224或表示
210中不存在,则覆盖规则可以在表示210到表示212的变换期间被跳过而不是使得请求224被丢弃。
[0032] 例如,覆盖规则可以包括以下表示:
[0033] Override:IN:Params:DecodeMemberURN():/user在以上表示中,“Override:IN:Params”规定了被应用于请求的参数的覆盖规则。该覆盖规则还标识了要被应用于“user”字段以针对该字段生成替换值的名为“DecodeMemberURN”的函数。因此,该覆盖规则可以用于利用识别社交网络成员的经解码的成员URN来替换请求224中的编码的用户键。
[0034] 插入规则220可以被用来向请求224中插入新字段。例如,通过规定在请求224中将名为“type”的字段中加入字段“TEXT_AD”的插入规则,发送方208可以被约束为通过API 206创建具体类型的广告活动(例如,基于文本的广告)。如果已经在表示210中找到了该字段(例如,具有不同值),则请求224可以被丢弃以避免在处理请求224时的冲突。
[0035] 在另一个示例中,插入规则可以包括以下表示:
[0036] Inject:IN:Body:fetchMemberID():/owner
[0037] 在以上表示中,“Inject:IN:Body”规定了应用于请求的正文的插入规则。该插入规则还标识出要用于生成插入到请求中名为“owner”的字段中的值的名为“fetchMemberID”的函数。
[0038] 投影规则222可以标识出能够在请求224中被规定的允许的投影字段的集合。例如,投影规则可以包括以下表示:
[0039] Nodelnclusivity:IN:Projections:firstName,lastName,
[0040] location:postalCode
[0041] 该投影规则可以被规定为应用于请求中的投影字段的包容性规则(即,“Nodelnclusivity:IN:Projections”)。该投影规则还指示请求中允许“firstName”、“lastName”和“location:postalCode”投影字段。换句话说,投影规则222可以通过将字段插入到“requested fields”参数中来确保请求224仅可以被用来从提供API 206的后台服务获取字段的有限集合,和/或确保已经出现在该参数中的任何字段都是允许字段的严格子集。
[0042] 本领域技术人员将会意识到,可以向发送方208指定多个许可108,这可以使得来自多种访问控制配置的多个变换规则集合被应用于表示210。作为结果,访问控制装置204可以包括将多个可能冲突的变换规则集合合并成变换规则的单个集合的功能,该单个集合被应用于表示210以产生表示212。
[0043] 特别地,访问控制装置204可以将来自包容性规则214和/或投影规则222的允许属性的多个集合合并成允许属性的单个超集。例如,发送方208可以与两种访问控制配置相关联;第一种配置可以规定请求224中的允许投影字段“firstName”、“lastName”和“location:postalCode”,而第二种配置则可以规定请求224中的允许投影字段“di”和“firstName”。作为结果,所述配置可以被合并成允许投影字段的单个集合,其包括“firstName”、“lastName”、“location:postalCode”和“id”。
[0044] 访问控制装置204可以简单地将给定字段的多个验证规则216合并成针对该字段规定可允许值集合的单个规则。例如,两种访问控制配置可以使用以下内容规定两种单独的验证规则216:
[0045] Nodelnclusivity:IN:Body:/adCampaigns/type:(TEXT_AD)
[0046] Nodelnclusivity:IN:Body:/adCampaigns/type:
[0047] (SPONSORED_UPDATES)
[0048] 该验证规则可以被合并成具有以下表示的单个验证规则:
[0049] Nodelnclusivity:IN:Body:/adCampaigns/type:
[0050] (TEXT_AD,SPONSORED_UPDATES)
[0051] 作为结果,具有任一值“TEXT_AD”或“SPONSORED_UPDATES”的“/adCampaigns/type”字段都可以通过该合并的验证规则。
[0052] 相反地,覆盖规则218和插入规则220的多个集合则仅在对应的修改中没有发现冲突的情况下才可以被合并。例如,访问控制装置204可以检测以下两个覆盖规则中的冲突:
[0053] Override:IN:Body:encodeURN():/adAccountUsers/user Override:IN:Body:fetchMemberID():
[0054] /adAccountUsers/user
[0055] 第一覆盖规则可以使用名为“encodeURN”的函数来覆盖名为“/adAccountUsers/user”的字段的值,而第二覆盖规则可以使用名为“fetchMemberID”的不同函数来覆盖具有可能不同值的相同字段。
[0056] 与此同时,访问控制装置208可以检测以下两个插入规则中的冲突:
[0057] Inject:IN:Params:encodeURN():/search/searchParams.
[0058] searchTrackinglnfo.searchId
[0059] Inject:IN:Params:fetchMemberID():
[0060] /search/searchParams.
[0061] searchTrackinglnfo.searchId
[0062] 第一插入规则可以使用名为“encodeURN”的函数将值插入到名为“/search/searchParams.searchTrackinglnfo.searchId”的字段中,而第二插入规则则可以使用名为“fetchMemberID”的不同函数向相同字段中插入可能不同的值。
[0063] 当向给定许可和/或发送方所指定的传输规则的两个或更多集合在请求的一个或多个字段中产生冲突的修改时,访问控制装置204和/或系统的另一个组件可以生成指示冲突规则的错误并且防止使用冲突规则对请求进行后续处理。在另一方面,在多个覆盖规则和/或插入规则对字段执行相同操作时可以避免冲突(例如,通过对字段应用相同的函数或运算)。作为结果,重复规则可以被合并成被应用于表示210以产生表示212的单个规则。
[0064] 在从变换规则生成表示212之后,访问控制装置204和/或系统的另一个组件可以使用表示212中的字段来调用API 206,并且提供API 206的服务可以从该字段生成响应226。例如,该服务可以使用表示212中指定的字段来执行查询、存储数据、变换数据、实现特征、和/或执行另一任务,并且基于所执行的任务来生成响应226。
[0065] 在从API 206接收到响应226之后,访问控制装置204可以对响应226中的字段集合(例如,字段E 240、字段F 242)应用另外的包容性规则214、验证规则216、覆盖规则218、插入规则220、投影规则222、和/或其他类型的变换规则。如同请求224一样,响应226中的字段可以在变换规则被应用于所述字段之前被访问控制装置204和/或系统的另一个组件使用以填充数据结构。例如,响应226可以包括头部、正文、一个或多个键、一个或多个参数、和/或一个或多个投影。
[0066] 进而,所述变换规则可以被用来产生对响应226的表示232,其包括字段的不同集合(例如,字段G 244、字段H 246)。例如,访问控制装置204可以使用变换规则来过滤字段、验证字段中的值、覆盖字段中的值、和/或在响应226中插入新字段。访问控制装置204和/或系统的另一组件接着可以替代响应226而将表示232传送至发送方208,由此对在处理针对API 206的调用时所涉及到的整个请求-响应循环施加以访问控制。
[0067] 通过使用可配置许可108、别名232、和/或变换规则来修改与API调用相关联的请求和/或响应,图2的系统可以使能够在API调用的处理期间进行精细粒度的访问控制、用于改变外部化要求的调适、数据模糊、字段修整、和/或上下文管理。进而,该系统可以减少与创建API的多个版本以适应关联于该API的不同类型调用方的要求和/或约束相关联的人工开销和/或管理。例如,可以使用多个许可108、别名232、和/或变换规则集合来创建映射到单个后台服务的多个上下文敏感的API端点。所述API端点因此可以被用作“新的”服务,其根据相对应的变换规则来表现同时利用相同的后台服务针对指向该API端点的请求生成响应。结果,图2的系统可以改进和简化不同类型的调用方对于API的使用,以及API的开发方和/或管理方对于API的定制和维护。
[0068] 本领域技术人员将会意识到,图2的系统可以以各种方式来实现。第一,授权装置202、访问控制装置204和规则库集234可以由单个物理机器、多个计算机系统、一个或多个集群、一个或多个虚拟机、网格、一个或多个数据库、一个或多个文件系统和/或云计算系统来提供。授权装置202和/或访问控制装置204也可以由一个或多个硬件和/或软件组件和/或层级一起和/或单独实施。授权装置202、访问控制装置204和规则库集234可以针对请求的体量以及使用该系统变换的API的数量进一步缩放。
[0069] 第二,访问控制装置204可以对请求224和/或响应226应用不同类型和/或集合的变换规则从而改变发送方208对于API 206的访问和/或API 206的功能。例如,除了包容性规则214、验证规则216、覆盖规则218、插入规则220和/或投影规则222之外或者作为它们的替代,访问控制装置204可以对请求224和/或响应226应用执行基于评分的决策、基于用户选择退出的数据清理、和/或其他专门操作的定制变换规则。
[0070] 第三,在处理API调用时所使用的许可108、别名232、和/或变换规则可以从多个源获得。例如,针对多个API和/或使用API的实体的访问控制配置可以使用配置文件、规则引擎、可执行模块、“自服务”API配置服务、和/或用于执行软件平台的动态、灵活配置的其他机制而被指定和/或实现。
[0071] 第四,图2的系统可以被用来执行针对API 206和/或其他API的调用的监视和/或节流。例如,授权装置202、访问控制装置204、和/或系统的另一组件可以用于在每个用户和/或每个应用的基础上对针对API的到来请求进行跟踪和/或节流,并且为请求的发送方生成对警告和/或被丢弃请求的通知。
[0072] 图3示出了根据所公开实施例的图示出对针对API的调用的处理的流程图。在一个或多个实施例中,一个或多个步骤可以被省略、重复、和/或以不同顺序执行。因此,图3所示的步骤的具体部署不应当被理解为对实施例范围加以限制。
[0073] 一开始,获得针对API的请求的第一表示(操作302)。例如,该请求可以被解析以生成作为包含字段集合的数据结构(例如,树)的第一表示。该字段可以包括但并不局限于请求中的头部、正文、参数、投影、和/或键。
[0074] 接下来,如下文关于图4进一步详细描述的,识别与关联于该请求的一个或多个许可相匹配的变换规则集合(操作304)。所述变换规则接着被应用于该第一表示以生成该请求的第二表示(操作306)。
[0075] 例如,所述变换规则可以包括规定请求中的允许字段集合的包容性规则,规定针对该请求的响应中的允许字段集合的投影规则,验证请求中的字段的值的验证规则,覆盖请求中的字段的值的覆盖规则,和/或将值插入到请求中的字段中的插入规则。每种变换规则可以独立于针对请求的其他变换规则而被应用,或者所述变换规则可以根据和/或基于相互之间的依赖性而被应用。进而,所述变换规则可以用于生成第二表示,以使得该第二表示中的字段是第一表示中的字段的子集,是第一表示中的字段的超集,和/或被指定给不同于第一表示中的字段的值。
[0076] 在产生请求的第二表示之后,触发提供API的服务对该第二表示的处理(操作308)。例如,第二表示中的字段可以以符合针对该API的调用的格式进行排列,并且该调用可以使用格式化字段以及去往该服务的路径被触发。
[0077] 在从该服务接收到针对该请求的响应之后,一个或多个变换规则与该响应的第一表示进行匹配(操作310),并且被应用于该响应的第一表示以生成该响应的第二表示(操作312)。例如,该响应的第一表示可以包括含有该响应中的头部、正文、键、投影和/或参数的数据结构。作为结果,可以使用(多种)变换规则以进一步过滤响应中的字段和/或将字段从该API在其中操作的上下文(例如,针对社交网络的成员的解码成员键)转换为该请求的发送方在其中进行操作的不同上下文(例如,表示发送方的应用用户的编码用户ID)。
[0078] 最后,触发该响应的第二表示中的字段针对请求发送方的传输(操作314)。例如,该字段可以被格式化以符合针对该请求的预期响应,并且被传送至用户的网络地址和/或其他位置。
[0079] 图4示出了根据所公开实施例的图示出识别匹配与API调用相关联的许可的变换规则集合的处理的流程图。在一个或多个实施例中,一个或多个步骤可以被省略、重复、和/或以不同顺序执行。因此,图4所示的步骤的具体部署不应当被理解为对实施例范围加以限制。
[0080] 首先,针对API的请求的发送方与一个或多个许可进行匹配(操作402)。例如,发送方的认证证书(例如,访问令牌)可以用于获取向其指定该发送方的许可的集合。每个许可可以包括该发送方已经访问的一个或多个API的一种或多种访问控制配置。
[0081] 接下来,(多种)许可用于将请求的名称与提供API的服务进行匹配(操作404)。例如,每个许可可以包括一个或多个别名,一个或多个API通过所述一个或多个别名而被展现给向许可指定的实体。该请求的名称可以与别名之一匹配并且用于求解该API的路径和/或提供该API的服务。
[0082] 接着,从与许可相关联的一个或多个配置获得一个或多个变换规则集合(操作406)。例如,每个变换规则集合可以在与向发送方指定的许可相关联或者由所述许可所表示的访问控制配置中被规定。所述变换规则和/或访问控制配置可以随许可的别名和/或其他分量一起被包括,或者许可的不同分量可以被存储在不同位置中(例如,数据库表格、文件等)并且通过键、路径和/或其他标识符互相链接。
[0083] 每个许可还可以包括一种或多种访问控制配置。作为结果,发送方可以与要应用于相同请求的多个变换规则集合相关联。在针对发送方和API存在多个变换规则集合时,该多个集合被合并成该请求和/或针对该请求的响应的单个变换规则集合(操作408)。例如,可以通过将来自规则的允许字段、字段值和/或其他属性合并为允许字段、字段值和/或属性的单个超集来合并包容性、投影、和验证规则。另一方面,覆盖和插入规则仅在规则通过冲突检查之后才可以被合并,所述冲突检查确定规则不对相同字段执行不同的修改。如上文所讨论的,经合并的变换规则接着可以被应用于请求和/或响应以执行API调用的动态、灵活的变换。
[0084] 图5示出了根据所公开实施例的计算机系统500。计算机系统500包括处理器502、存储器504、存储设备506,和/或在电子计算设备中发现的其他组件。处理器502可以支持与计算系统500中的其他处理器的并行处理和/或多线程操作。计算机系统500还可以包括输入/输出(I/O)设备,例如键盘508、鼠标510、和显示器512。
[0085] 计算机系统500可以包括用于执行当前实施例的各个组成部分的功能。特别地,计算机系统500可以包括操作系统(未示出),其协调计算机系统500上的硬件和软件资源的使用,以及为用户执行专门任务的一个或多个应用。为了为用户执行任务,应用可以从操作系统获得计算机系统500上的硬件资源的使用,以及通过操作系统所提供的硬件和/或软件框架与用户进行交互。
[0086] 在一个或多个实施例中,计算机系统500提供了一种用于执行API调用的基于规则的变换的系统。该系统可以包括授权装置和访问控制装置,它们中的一个或二者可以可替换地被称作或实施为模块、机制,或者其他类型的系统组件。该授权装置可以将针对API的请求的发送方与一个或多个许可相匹配。接下来,访问控制装置可以识别匹配(多个)许可的变换规则集合。该访问控制装置接着可以将所述变换规则集合应用于请求的第一表示中的第一字段集合以生成该请求的第二表示,其包含不同于该第一字段集合的第二字段集合。最后,该访问控制装置可以触发提供该API的服务对该请求的第二表示的处理。
[0087] 此外,计算机系统500的一个或多个组件可以被远程定位并且通过网络连接至其他组件。当前实施例的多个部分(例如,授权装置、访问控制装置、规则库集、API、发送方等)也可以位于实施实施例的分布式系统的不同节点上。例如,当前实施例可以使用在远程客户端集合和提供API的服务集合之间动态变换API调用的云计算系统来实现。
[0088] 上文仅出于说明和描述的目的给出了各个实施例的描述。它们不旨在是穷举的或者将本发明限制为所公开的形式。因此,许多修改和变化对于本领域技术人员将会是清楚明白的。因此,以上公开不旨在对本发明进行限制。