我正在尝试理解API。
问题1: 我明白它可以帮助两个应用程序相互通信。因此,如果我在我的应用程序中使用第三方服务,我可以通过使用他们的API来实现。了解。但为什么我们需要在同一家公司内使用API?如果假设XYZ公司有一个java / js应用程序,他们使用公司内部API获取数据。当资源在同一家公司内时,拥有API的重点是什么。 此外,这应该是REST还是SOAP?
问题2: 假设我有用户使用我的API“x1”,其底层数据库“d1”具有模式“s1”。现在,我已完全改变了底层数据库和模式为“d2”和“s2”并具有新的API“x2”。在不知道此转换的情况下,用户如何继续使用我的API?如何在没有用户知道的情况下透明地完成转换。
问题3:
它的确切含义是“休息可以缓存吗?”。任何例子? 只有两种类型的API? REST& SOAP吧?
有人问过我这些问题。我完全搞砸了。有人可以解释并清除我的困惑吗?
答案 0 :(得分:1)
最简单的是,API是一组用于完成特定任务的可重用函数。因此,如果使用标准fopen
函数编写C程序,则使用POSIX API,它定义了该函数的行为方式。至关重要的是,您的程序不需要知道如何实现该函数,因为API是用于在不同系统上执行相同任务的抽象。特定实现将由每个目标系统上的库提供。
这种直接API仅在您使用同一台计算机时才有效,并且您的程序和库是用可以轻松绑定在一起的语言编写的。在某些情况下,您需要将更多不同的资源绑定在一起,因此需要使用不同类型的API。例如,您可以编写一个脚本友好的命令行界面到您的库(基于文本的API),或使用信号和管道在两个正在运行的进程(称为IPC,用于进程间通信)之间进行通信。
这将我们带到网络API ,特别是Web API,这是您问题的主要主题。这些与上面的相同,但它们使用HTTP和相关技术让进程相互通信,即使它们不在同一主机上。正如您所说,这允许组织拥有 public API,但它也允许使用多种编程语言和技术将系统扩展到多个服务器上。抽象的概念意味着作为API服务提供的系统的一部分在理论上可以被新的实现替代,而不会对使用它的程序进行任何更改。如果需要重新设计,可能会提供一个看起来像旧API的包装器,并调用新的包装器,根据需要翻译数据。
构建Web API的方法有很多种,但它们大致分为两类:
由于这些API应该是语言中立的,因此有必要定义数据的表示方式;最常见的格式是XML和JSON,但也可能有其他格式,例如Google的Protocol Buffers。