理解API转换&内部API's

Understanding API transition & inhouse API's

本文关键字:API 内部 amp 转换 理解      更新时间:2023-09-26

我正在努力理解API的。

问题1:我知道它有助于两个应用程序之间的通信。所以,如果我要在我的应用程序中使用第三方服务,我可以通过使用他们的API来做到这一点。明白了。但为什么我们需要API在同一家公司?假设XYZ公司有一个java/js应用程序,他们使用公司内部的API获取数据。当资源在同一家公司时,拥有API有什么意义。此外,这应该是REST还是SOAP?

问题2:假设我有用户使用我的API"x1",该"x1"具有底层数据库"d1",该数据库具有模式"s1"。现在,我已经完全改变了底层数据库&架构到"d2"answers"s2",并具有新的API"x2"。用户如何在不知道这个过渡的情况下继续使用我的API?如何在用户不知情的情况下透明地完成转换。

问题3:

另外,"rest可以缓存"到底是什么意思呢。有什么例子吗?API只有两种类型?REST&SOAP对吗?

有人问我这些问题;我完全搞砸了。有人能解释并澄清我的困惑吗?

最简单地说,API是一组用于完成特定任务的可重用函数。因此,如果您使用标准fopen函数编写C程序,那么您使用的是POSIX API,它定义了该函数的行为方式。至关重要的是,您的程序不需要知道函数是如何实现的,因为API是一个抽象,用于在不同的系统上执行相同的任务。具体实施将由每个目标系统上的一个库提供。

这种直接的API只有在您使用同一台计算机时才有效,并且您的程序和库是用可以轻松绑定在一起的语言编写的。在某些情况下,您需要将更多不同的资源绑定在一起,因此需要不同类型的API。例如,您可以为库编写一个脚本友好的命令行界面(一个基于文本的API),或者使用信号和管道在两个运行的进程之间进行通信(称为IPC,用于进程间通信)。

这就引出了网络API,尤其是Web API,这是您问题的主要主题。这些与上面的相同,但它们使用HTTP和相关技术,即使进程不在同一台主机上,也可以让进程相互通信。正如您所说,这允许组织拥有公共API,但它也允许使用多种编程语言和技术将系统扩展到多个服务器上。抽象的概念意味着,理论上,作为API服务提供的系统的一部分可以被新的实现完全取代,而无需对使用它的程序进行任何更改。如果需要重新设计,可以提供一个看起来像旧的API的包装器,并调用新的包装器来根据需要转换数据。

有许多方法可以构建Web API,但它们大致分为两类:

  • RPC(远程过程调用)API基于动作或动词,具有定义的参数、效果和返回值;就好像您在远程主机上调用函数或过程一样。SOAP是RPC风格API的一个特殊标准,它使用XML定义了一个"信封";不过,它并没有在信封内定义太多
  • 面向资源的API关注名词而不是动词,并且不旨在类似于经典的函数调用。您可以将RSS提要视为此类简单的API——访问提要的URL会导致服务器生成资源,并以定义良好的格式将其呈现给其他程序使用。REST是这个想法的正式化,使用URL来表示对象,使用HTTP请求来表示对这些对象的操作-获取GET、创建POST、更新PUT等。通过使用HTTP,这个想法是利用现有的技术来使用可供人使用的资源,如缓存响应,而用户不需要知道API是如何编写的

由于这些API应该是与语言无关的,因此有必要定义数据的表示方式;最常见的格式是XML和JSON,但也可以有其他格式,例如Google的Protocol Buffers。