用大白话给你科普,到底什么是 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(应用程序编程接口)?
何为API?如果你在百度百科上搜索,你会得到如下结果:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组…...
企业电子招采系统源码——信息数智化招采系统
信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...
【vnc】Ubuntu20.04+vnc安装和配置(中文输入法)
Ubuntu20.04vnc安装和配置(中文输入法) 安装vnc 用以下apt 命令安装: sudo apt install tigervnc-common tigervnc-standalone-server tigervnc-viewer tigervnc-xorg-extension注意,要用standalone-server版本,不要下载Tiger官方安装包&a…...
【排序算法】数据结构排序详解
前言: 今天我们将讲解我们数据结构初阶的最后一部分知识的学习,也是最为“炸裂”的知识---------排序算法的讲解!!!! 目录1.排序的概念及其运用1.1排序的概念1.2排序运用2.常见排序算法的实现2.1 插入排序2…...
【docker知识】DockerFile语法 1:注释指令、解释器指令
一、说明 在docker的指令下工作,似乎很简单,然而,对于复杂工程,这些初级知识是不够的。正确使用DockerFile构建镜像是必须的技能。我们这里假定您已经熟练docker的指令,我们继续上升一个台阶,如何用build和…...
[失业前端恶补算法]JavaScript leetcode刷题top100(一)
专栏声明:只求用最简单的,容易理解的方法通过,不求优化,不喜勿喷 今天更新五个 easy 难度题目: 两数之和 题面 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的…...
HTTP协议
目录 一、HTTP协议 1.http 2.url url的组成: url的保留字符: 3.http协议格式编辑 ①http request ②http response 4.对request做出响应 5.GET与POST方法 ①GET ②POST 7.HTTP常见Header ①Content-Type:: 数据类型(text/html等)在上文…...
javafx学习教程
1.舞台,场景,布局,控件,回调 2.舞台:窗口,一个舞台一个窗口,舞台有舞台基础属性,舞台监听事件,做一些回调 3.fxml里面可以写 页面的布局,控件,然…...
百度百科创建词条教程合集分享,赶紧收藏起来
每一个企业、品牌、人物、产品想要提升自己的知名度,都要创建一个属于自己的百度百科词条,互联网时代,百度搜索引擎的地位是不可撼动的,每天都有上亿的用户在百度上搜索相关内容,百度百科词条在网络营销中占据着举足轻…...
镜像恒流源电路分析
在改进型差动放大器中,用恒流源取代射极电阻RE,既为差动放大电路设置了合适的静态工作电流,又大大增强了共模负反馈作用,使电路具有了更强的抑制共模信号的能力,且不需要很高的电源电压,所以,恒…...
奥威软件宏昊化工启动BI项目,打造智能制造标杆
近日,中国纺织行业领先企业宏昊化工有限公司成功启动了与奥威签订的BI项目,期望通过BI的建立进一步提升企业数字化经营能力和核心竞争力。 奥威bi数据分析软件 在全球经济形势不明朗,国内外市场竞争加剧叠加疫情反复的情况下,化工…...
GitHub访问问题与FastGithub下载及使用(详细篇)
前言 📜 “ 作者 久绊A ” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴 目录 前言 FastGithub的介绍 FastGithub的下载 FastGithub的安装及…...
这个打上实时补丁的Linux内核,大家可以看一下
前言最近看到一个关于实时Linux内核的开源项目,是一个比较牛逼的公司发起的,想推荐给大家。Linux的实时性一直是被很多开发者诟病的,一个分时系统怎么能在工业领域发挥自己的长处呢,我认为研究Linux的实时性是非常有必要的&#x…...
三维形体的表面积
三维形体的表面积 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 例子: 输入:[[2,1],[1,0]]输出:18 解题思路࿱…...
二维码数据压缩实践 | 使用python对二维码数据进行压缩 |不乱码,支持中文
当前二维码的应用越来越广泛,包括疫情时期的健康码也是应用二维码的典型案例,最近需要通过一张二维码显示较多文本数据,也就是对二维码数据进行压缩,使用CSDN搜索了半天居然没有能简单使用的代码,很多事例代码解决不了…...
C语言学习_DAY_3_基本数据类型_运算符与表达式【C语言学习笔记】
目录 I. 基本数据类型 II. 复杂的输出和输入语句编写 III. 运算符与表达式 III.I 算术运算符 III.II 关系运算符 III.III 逻辑运算符 III.IV 位运算符 III.V 三目运算符 III.VI 逗号运算符 高质量博主,点个关注不迷路🌸🌸dz…...
c++练习题(4)
题号:1 设int a3,b2;则a*b的结果是() A、2 B、7 C、3 D、8 题号:2 一个程序单位中不包括以下哪项() A、伪代码 B、函数 C、预处理指令 D、全局声明 题号:3 若a-14,…...
腾讯云 cos 字体在CDN上跨域处理
问题描述:项目中用到了字体的静态资源,把静态资源放到了腾讯云对象存储提供的 COS 上,同时启用它的CDN来加速。但是,调试的过程中发现报错:CSS加载字体跨域了,字体图标无法正常显示。 原因:字体…...
api是什么意思?又该如何使用呢?
一、应用程序编程接口 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 API全称 "…...
JavaScript------面向对象
目录 一、面向对象编程(OOP) 基本概念 二、类 1、语法 2、通过类创建对象 3、类的属性 4、类的方法 5、构造函数 三、面向对象的三个特点 1、封装 如何确保数据的安全(实现封装的方式): 2、继承 在子类中&a…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
