了解API转换&内部API

时间:2015-04-03 01:24:11

标签: javascript json api rest

我正在尝试理解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吧?

有人问过我这些问题。我完全搞砸了。有人可以解释并清除我的困惑吗?

1 个答案:

答案 0 :(得分:1)

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

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

这将我们带到网络API ,特别是Web API,这是您问题的主要主题。这些与上面的相同,但它们使用HTTP和相关技术让进程相互通信,即使它们不在同一主机上。正如您所说,这允许组织拥有 public 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。