用大白话给你科普,到底什么是 API(应用程序编程接口)?

编者按:何为API?如果你在百度百科上搜索,你会得到如下结果:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。那么再通俗一点来说,API究竟是什么呢?
在这里插入图片描述
在我学习软件开发之前,API听起来似乎像是一种啤酒。
而现在,我开始频繁使用这一术语,以至于我在酒吧里都想点一杯API来喝喝看了。
酒保发送的响应是:“查无此酒”——404:找不到该资源。
我碰见过很多人,有科技圈内的,也有圈外的。对于API这样一个常见术语的含义,他们的理解都存在些许偏差或不确定的成分。
从技术角度来说,API指的是应用程序编程接口。大多数大型企业都会为自己的客户建立应用程序编程接口,或供内部使用。
但是你该如何用大白话来解释API这个术语呢?除了在开发和业务中的含义,API是不是有更宽泛的含义呢?首先,让我们退后一步,来了解一下互联网究竟是如何工作的。

WWW和远程服务器

当我想到互联网的时候,我的脑海中浮现出了一个由互联服务器构成的大型网络。
互联网上的每一个界面都被存储在一个远程服务器里。远程服务器也没有大家想的那么神秘——它不过是用来优化处理需求的远程计算机罢了。
为了正确了解API,你可以在自己的笔记本电脑上启动一个能面向网络提供整个网站服务的服务器(事实上,在网站正式上线之前,工程师们就是通过本地服务器来开发网站的)。
当你在浏览器中输入www.facebook.com,一则请求会出现在Facebook的远程服务器上。一旦你的浏览器收到了响应,它就会解析代码、呈现出网页。
对于浏览器来说(这也是所谓的客户端),Facebook的服务器就是一个应用程序编程接口。这意味着每当你在互联网上访问一个页面的时候,你都在与某个远程服务器的API发生交互。
API并不完全等同于远程服务器——它其实是服务器的一部分,负责接收请求并发送响应。

API是一种为客户提供服务的方式

你也许听说过有公司将API包装成产品。举个例子,Weather Underground就会出售其天气数据API的访问权限给其他人。
示例场景:你是一家小企业,公司网站上有一个表格是用来给客户注册预约的。你想要凭借这些预约细节信息,让客户能够自动在谷歌日程上创建活动。
API使用: 这就意味着,你的网站服务器需要直接与谷歌服务器进行对话,在掌握既定细节信息的情况下,申请创建活动。之后,你的服务器就会接收到谷歌的响应并进行处理,然后将相关信息发送回浏览器,比如说向用户发送一个确认信息。
此外,你的浏览器通常可以绕过自己的服务器,直接向谷歌服务器发送API请求。
那么谷歌日历的API与其他远程服务器的API存在什么区别呢?
从技术角度来说,不同之处在于请求和响应的形式。
为了提交整个页面,你的浏览器会期待得到HTML格式的响应,这就包括显示代码。而谷歌日历的API只会返回一些数据——大多是与JSON格式相同。
如果你的网站浏览器发出了API请求,之后网站服务器就成为了客户端(当你使用浏览器访问某一网站的时候,你的浏览器也相当于是一个客户端)。
从用户角度来说,API可以让他们无需离开网站就能完成原先的操作。
现今大多数网站至少都会使用一些第三方API。
存在的问题都有了第三方解决方案,但是是以库或服务的形式。使用现有的解决方案已经变得更加方便且可靠了。
开发团队将自己的应用分解到多个可以通过API进行互通的服务器上,这已经是司空见惯的做法了。这些为主应用服务器提供辅助功能的服务器通常被称作是微服务架构。
总结一下,当一家公司为客户提供API的时候,这仅仅意味着它们建立了一组专用的URL通道,用来返回纯数据响应——也就是说,响应内容不会包含图形用户界面(例如网站)中的显示开销。
你能够用自己的浏览器发送这种请求吗?通常都是可以的。由于实际的HTTP传输都是以文本的形式进行的,你的浏览器可以一直达到显示响应的最佳状态。
举个例子,你可以直接通过浏览器访问GitHub的API,而无需访问令牌。如下是你在浏览器中访问GitHub用户API路径时得到的JSON响应:

在这里插入图片描述
浏览器似乎可以很好地显示出JSON响应结果。像这样的JSON响应,你就可以直接用在代码中了。从这些文本中,你很容易可以提取出数据,之后你就可以基于这些数据做自己想要做的事情了。

A指的是“应用”(Application)
作为结束,我就再给出几个API的实例吧。
“应用”(Application)可以指代很多事物。如下是它在API语境下的含义:
API:

  1. 一个提供特定功能的软件
  2. 整个服务器、整个应用或一款应用的很小一部分

从本质上来说,任何能从自身环境中分离出来的软件都可以成为API中的“A”,且很可能它本身也是某种API。就这么说吧,你在代码中使用的是第三方库。一旦该库与你的代码整合在了一起,那么这个库也就成为了整体应用的一部分。作为软件中特殊的一部分,库很有可能也拥有一个API,使其与剩余代码进行交互。
还有一个例子:在Object Oriented Design(面向对象编程)中,代码被编成了对象。你的应用程序也许拥有数百个能够实现交互的对象。
每一个对象都有一个API——这是一组公共方法和属性,对象可以用它来与应用中的其他对象进行交互。
对象也许还拥有私有的内部逻辑,这就意味着它在躲避外界环境(那它也就不是一个API)。
从上述讨论的内容来看,我希望你能掌握API的广义,也能了解现今这一术语的常见含义。

编译组出品。编辑:郝鹏程

用大白话给你科普,到底什么是 API(应用程序编程接口)?

### RestTemplate 的概念 `RestTemplate` 是 Spring Framework 提供的一个用于简化 HTTP 请求操作的工具类[^2]。它的主要功能是从远程服务获取资源并将其转换为 Java 对象,或者向远程服务发送数据。 通过 `RestTemplate`,开发者可以轻松实现 RESTful Web Service 客户端的功能,支持 GET、POST、PUT 和 DELETE 等常见的 HTTP 方法。它封装了底层的网络通信细节,使得开发人员无需关心低级别的连接管理或序列化/反序列化的复杂过程。 #### 如何通俗易懂地理解 RestTemplate? 假设你在一家餐厅点餐,而这家餐厅只接受电话订单。为了完成这个任务,你可以亲自拨打电话给服务员下单(类似于手动处理 HTTP 请求)。然而,如果你有一个专门负责帮你打电话的服务员代理——他不仅会替你拨打号码,还会记录下对方的回答并将这些信息转达给你,那么整个流程就会变得简单得多。在这个比喻中,“服务员代理”就相当于 `RestTemplate`,它是用来帮助我们更方便地与外部系统交互的一种机制。 ### 使用 RestTemplate 的具体场景举例 考虑这样一个生活中的例子:想象一下你要查询天气预报来决定今天穿什么衣服出门。如果采用传统的做法,则需要自己编写复杂的代码去解析 JSON 数据流等等;但是有了 `RestTemplate` 后,这一切都变得更加简便快捷! 下面是一个简单的代码片段展示如何利用 `RestTemplate` 来调用第三方 API 获取当前城市的温度: ```java import org.springframework.web.client.RestTemplate; public class WeatherClient { public static void main(String[] args) { String url = "http://api.weatherapi.com/v1/current.json?key={your_api_key}&q=London"; RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(url, String.class); System.out.println(result); // 输出返回的结果 } } ``` 上述程序展示了怎样通过指定 URL 地址加上必要的参数构建请求,并最终打印出响应的内容。这里需要注意的是实际应用当中应该替换 `{your_api_key}` 部分为真实的密钥值以便成功访问目标接口。 ### 总结 综上所述,`RestTemplate` 可视为一种桥梁角色,在应用程序之间传递消息的同时隐藏了许多技术上的繁琐之处。对于初学者来说,掌握其基本语法之后就可以迅速投入到项目实践中去了[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值