什么是API?

简介: 什么是API?

一、前言


在我学习软件开发之前,API听起来像是一种啤酒。

image.png


这篇文章我会大量使用这个词,我就以酒吧为例,比如我向酒吧订购API。

调酒师响应给我一个404:资源未找到。

我遇到了很多人,他们都在科技和其他领域工作,对于这个相当常见的术语含义是什么,他们有一个相当模糊或不正确的理解。

从技术上讲,API代表应用程序编程接口。在某种程度上,大多数大公司都会为其客户构建了API,或者用于内部使用。

但是,你如何用简单的语言来解释API呢?是否有比开发或业务中使用的更广泛的含义?首先,让我们回顾一下网络本身的工作原理。


二、WWW和远程服务器


当我想到网络时,映入脑海的是一个连接着大型服务器的网络。

互联网上的每一个页面都存储在远程服务器上的某处。远程服务器并非那么神秘——它只是远程计算机的一部分,用于处理请求。

为了便于理解,您可以在笔记本电脑上启动一台能够为整个网站提供服务的服务器(实际上,工程师在上线网站之前经常使用本地服务器来开发网站)。

当您在浏览器中输入www.facebook.com时,会向Facebook的远程服务器发送请求。一旦浏览器收到Facebook服务器的响应,它将会解释响应代码并显示在页面上。

因而浏览器被称为客户端的,Facebook的服务器就是一个API。这意味着每次访问Web上的页面时,都会与某个远程服务器的API进行交互。

API与远程服务器不同——它是服务器的一部分,用于接收请求并发送响应。


三、API作为服务客户的一种方式


您可能听说过公司将API封装为产品。例如,Weather Underground 对其天气数据 API 的访问。

示例场景:您的网站(小型企业)具有为客户提供预约/约会的表单需求。并且您希望将客户表单的详细信息(如约会)加入到Google日历活动。

API使用:一般思路是让您的网站服务器直接与Google服务器通话,并请求创建具有给定详细信息的事件。然后,您的服务器将收到Google的回复,处理该回复并将相关信息返回给浏览器,例如向用户发送确认消息。

或者,您的浏览器通常可以绕过您的服务器直接向Google的服务器发送API请求。


四、Google日历的API有什么与众不同呢?


从技术角度而言,区别在于请求和响应的格式。

为了呈现整个网页,您的浏览器需要HTML中的响应,其中包含HTML代码,而Google日历的API调用只会返回数据 —— 可能采用JSON格式。


如果你的网站的服务器正在发出API请求,那么你的网站的服务器就是客户端(当你用它来浏览网站时,你的浏览器就是客户端)。


从用户的角度来看, API允许他们在不离开您的网站的情况下完成操作。


现代的网站多多少手都会使用一些第三方API。


许多问题已经有了第三方解决方案,无论是图书馆还是服务。使用现有解决方案通常更简单,更可靠。


开发团队将其应用程序分解为多个服务,这些服务之间通过API进行对话并交互。执行主应用的程序服务时,会调用其它服务来辅助,因此,会组建成一个大型的服务网络,我们称之为微服务。


简而言之,当一家公司向其客户提供一个API时,这意味着他们已经构建了一组专门的URL来返回纯数据响应。


你可以用你的浏览器发出这些请求吗?通常,是可以的。由于实际的HTTP传输发生在文本中,您的浏览器将始终尽其所能地显示响应。

例如,您可以直接使用浏览器访问GitHub的API,而不需要访问令牌。以下是在浏览器中访问GitHub用户的API路径时获得的JSON响应。

image.png

浏览器似乎已经很好地显示了JSON响应。这样的JSON响应已经可以在您的代码中使用了。对于程序而言从这个文本中提取数据很容易。然后你可以做任何你想要的数据。


五、A是“应用程序”


让我们再举几个API的例子。

“应用程序”可以指很多东西。以下是API中的一些内容:

  1. 一款具有独特功能的软件。
  2. 整个服务器,整个应用程序,或只是应用程序的一小部分。

基本上,任何可以与其环境区别开来的软件都可以是API中的“A”,并且可能还会有某种特殊类型的API。

假设您在代码中使用第三方库。一旦合并到您的代码中,库就成为您整个应用程序的一部分。作为一个独特的软件,该库可能会有一个API,允许它与其他代码进行交互。

这里还有另一个例子:在面向对象设计中,代码被组织到对象中。您的应用程序可能会定义数百个可以相互交互的对象。

每个对象就是一个API——一组公共方法和属性,用于与应用程序中的其他对象进行交互。

一个对象也可能具有私有的内部逻辑,这意味着对于API而言,它是不可见的。

通过本文的学习,我希望你能用一些的常见的场景来解释API。


六、参考


https://simple.wikipedia.org/wiki/Hypertext_Transfer_Protocol

https://www.youtube.com/watch?v=72snZctFFtA&feature=youtu.be

https://www.khanacademy.org/computing/computer-programming/programming/object-oriented/p/object-types


原文链接:https://medium.freecodecamp.org/what-is-an-api-in-english-please-b880a3214a82


相关文章
|
1月前
|
安全 Java 编译器
常用API篇
常用API篇
|
1月前
|
人工智能 JavaScript API
suno-api
suno-api
143 1
|
1月前
|
安全 Java Unix
如何开展API安全实现
【4月更文挑战第29天】安全编码培训、安全编码、静态检测。
|
1月前
|
前端开发 程序员 API
什么是API?谈对API的理解
什么是API?谈对API的理解
52 1
|
1月前
|
安全 API 网络安全
浅谈API安全
浅谈API安全
浅谈API安全
|
8月前
|
XML API 数据库
API介绍
API介绍
91 1
|
8月前
|
API
|
机器学习/深度学习 文字识别 JavaScript
热门的 API 大全推荐
热门的 API 大全推荐
129 0
|
XML 存储 缓存
什么是 API?
什么是 API?
|
SQL 缓存 Java