」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > API 的歷史:應用程式介面的演變

API 的歷史:應用程式介面的演變

發佈於2024-11-08
瀏覽:254

The History of APIs: Evolution of Application Programming Interfaces
应用程序编程接口 (API) 是现代软件开发不可或缺的一部分,可实现不同应用程序、服务和系统之间的连接和通信。多年来,API 已从简单的内部工具转变为网络的支柱,推动着从社交媒体集成到金融交易的一切。

本文将追溯 API 从诞生到其在当今数字经济中发挥关键作用的历史。

早期: API 的基础(1960 年代-1980 年代)
子例程和库的诞生
API 的起源可以追溯到 20 世纪 60 年代计算的早期,伴随着子例程和软件库的发展。子例程是可重用的代码块,开发人员可以在程序中调用它们,从而减少冗余并提高效率。这些可重用代码块为 API 的概念奠定了基础,允许软件组件进行内部通信。

随着软件系统复杂性的增加,对与系统功能交互的有组织和标准化的方式的需求也随之增加。软件库出现了,提供了可以被程序其他部分访问的预构建功能。这些库通过早期的内部 API 访问,允许开发人员利用现有功能,而无需重写代码。

模块化编程的概念
到了 20 世纪 70 年代和 80 年代,模块化编程的思想开始流行。在模块化编程中,软件被设计为独立的单元或模块,每个单元或模块负责特定的任务。这些模块使用预定义的接口相互通信,这是 API 的早期形式。

网络系统的兴起:分布式计算 API(1980 年代-1990 年代)

随着计算机开始通过网络互连,系统在不同机器之间进行通信的需求变得至关重要。这一转变标志着 API 发展的一个关键转折点。
远程过程调用 (RPC)

20 世纪 80 年代,远程过程调用 (RPC) 被开发出来,允许软件在网络中的另一台计算机上执行过程。这个概念是朝着我们今天所知的 API 迈出的重要一步,因为它使不同的机器能够以标准化的方式进行交互,从而使分布式计算成为可能。

CORBA 和 COM
20 世纪 90 年代,CORBA(通用对象请求代理架构)和 COM(组件对象模型)的出现彻底改变了软件组件在分布式环境中进行通信的方式。 CORBA 允许用不同编程语言编写并在不同操作系统上运行的应用程序进行通信,而 COM 允许跨应用程序重用软件组件。

然而,这些早期的 API 系统非常复杂,而且实施起来往往具有挑战性,因此需要寻找更简单、更灵活的解决方案。
网络时代:API 和互联网(1990 年代-2000 年代)
20 世纪 90 年代万维网的兴起给 API 的构思和使用方式带来了巨大的转变。 Web 为通过互联网连接不同的应用程序和服务开辟了新的可能性,而 API 对于实现这种互连性至关重要。

SOAP 的出现
20 世纪 90 年代末,简单对象访问协议 (SOAP) 作为一种用于在 Web 服务中交换结构化信息的协议而出现。基于 SOAP 的 API 允许不同的应用程序通过 Web 进行通信,通常使用 XML 来构造数据。虽然 SOAP 提供了一种实现跨平台交互的方法,但它通常被视为重量级且过于复杂。

早期公共 API
2000 年代初期,公共 API 兴起,公司开始公开其内部功能以供外部使用。第一个值得注意的例子是 Salesforce,它于 2000 年推出了一个 API,允许开发人员访问其 CRM 平台,标志着 API 成为核心业务战略时代的开始。
API 革命:REST 和云(2000 年代至今)
2000 年代,随着 REST(表述性状态传输)的引入,API 设计发生了一场革命,简化了应用程序通过网络进行通信的方式。

RESTful API
2000年,Roy Fielding在他的博士论文中引入了REST的概念。 RESTful API 利用现有的 Web 标准(主要是 HTTP),并且设计得比其前身(例如 SOAP)更简单、更轻量。 REST 允许开发人员构建可由任何能够发送 HTTP 请求的客户端轻松使用的 API,从而更轻松地通过 Web 集成系统。
REST 迅速流行起来,成为基于 Web 的应用程序的主要 API 设计模型。它的无状态性和简单性导致 Twitter、Facebook 和 Google 等公司广泛采用,这些公司开始提供公共 API,允许开发人员在其平台上构建应用程序。

云计算的兴起
云计算的兴起进一步加速了对API的需求。 Amazon Web Services (AWS)、Google Cloud 和 Microsoft Azure 等云平台公开了 API,允许开发人员以编程方式与云服务进行交互。 API 成为集成云服务(从存储到计算能力)的事实上的方法。

现代时代的 API:微服务及超越
2010 年代,微服务架构的兴起改变了应用程序的构建方式。系统不再是单一的应用程序,而是被分解为更小的、松散耦合的服务,并通过 API 进行通信。这种架构允许更可扩展和灵活的应用程序,其中可以独立开发、部署和扩展不同的服务。

GraphQL
2015 年,Facebook 推出了 GraphQL,一种新的 API 查询语言。与每个端点返回固定结构的 REST 不同,GraphQL 允许客户端准确请求他们所需的数据,从而减少数据的过度获取和不足获取。这种灵活性使其对复杂的应用程序特别有吸引力,例如涉及多种客户端类型(例如网络、移动)的应用程序。

API 生态系统
API 现在是许多数字生态系统的核心。 Stripe、Twilio 和 Slack 等平台围绕提供 API 构建了整个业务模型,开发人员可以使用这些 API 来构建支付系统、通信平台和集成。

API网关和管理
随着 API 对业务运营变得越来越重要,有效管理它们的需求也随之增长。 API 网关和管理工具的出现是为了处理速率限制、身份验证、监控和安全等问题。公司使用 Kong、Apigee 和 AWS API Gateway 等工具来管理大型系统中 API 的复杂交互。

API 的未来
随着我们走向未来,API 的作用将随着以下趋势继续扩大:

  1. 无服务器架构: API 在无服务器计算的兴起中发挥着关键作用,开发人员依靠云服务来自动管理基础设施、扩展和维护。
  2. 人工智能和机器学习 API: 随着人工智能和机器学习变得越来越重要,Google 的 TensorFlow 和 OpenAI 的 GPT 等 API 正在使开发人员能够使用这些技术。
  3. API 优先开发: 越来越多的组织正在采用 API 优先的软件开发方法,其中 API 被视为应用程序的核心,确保其设计良好、可扩展且易于使用易于消耗。

结论
API 的历史是一段创新之旅,从早期的内部软件库到我们今天使用的基于 Web、云集成和微服务驱动的现代 API。 API 已成为互联网的支柱,推动创新,实现新的业务模式,并为从社交媒体应用程序到金融交易的一切提供动力。
随着技术的发展,API 将继续影响我们构建、集成和扩展软件系统的方式,使它们成为未来数字化转型的重要方面。

版本聲明 本文轉載於:https://dev.to/keploy/the-history-of-apis-evolution-of-application-programming-interfaces-55p2?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何實時捕獲和流媒體以進行聊天機器人命令執行?
    如何實時捕獲和流媒體以進行聊天機器人命令執行?
    在開發能夠執行命令的chatbots的領域中,實時從命令執行實時捕獲Stdout,一個常見的需求是能夠檢索和顯示標準輸出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    程式設計 發佈於2025-04-06
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-04-06
  • 如何有效地選擇熊貓數據框中的列?
    如何有效地選擇熊貓數據框中的列?
    在處理數據操作任務時,在Pandas DataFrames 中選擇列時,選擇特定列的必要條件是必要的。在Pandas中,選擇列的各種選項。 選項1:使用列名 如果已知列索引,請使用ILOC函數選擇它們。請注意,python索引基於零。 df1 = df.iloc [:,0:2]#使用索引0和1 ...
    程式設計 發佈於2025-04-06
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-04-06
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-04-06
  • 如何簡化PHP中的JSON解析以獲取多維陣列?
    如何簡化PHP中的JSON解析以獲取多維陣列?
    php 試圖在PHP中解析JSON數據的JSON可能具有挑戰性,尤其是在處理多維數組時。要簡化過程,建議將JSON作為數組而不是對象解析。 執行此操作,將JSON_DECODE函數與第二個參數設置為true:[&&&&& && &&&&& json = JSON = JSON_DECODE($ ...
    程式設計 發佈於2025-04-06
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-04-06
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-04-06
  • 如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    在Visual Studio 2012 儘管已安裝了MySQL Connector v.6.5.4,但無法將MySQL數據庫添加到實體框架的“ DataSource對話框”中。為了解決這一問題,至關重要的是要了解MySQL連接器v.6.5.5及以後的6.6.x版本將提供MySQL的官方Visual...
    程式設計 發佈於2025-04-06
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-04-06
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-04-06
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題: 考慮一個佈局,其中我們具有可滾動的映射div,該圖像div與用戶的垂直滾動一起移動,同時維持固定的固定sidebar。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 映射{} 因此。我們不使用jQuery的“ .ai...
    程式設計 發佈於2025-04-06
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-04-06
  • 如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在Java中正確顯示“ DD/MM/YYYY HH:MM:SS.SS”格式的當前日期和時間?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解決方案: args)拋出異常{ 日曆cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    程式設計 發佈於2025-04-06
  • 在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在JTable中維護jtable單元格渲染後,在JTable中,在JTable中實現自定義單元格渲染和編輯功能可以增強用戶體驗。但是,至關重要的是要確保即使在編輯操作後也保留所需的格式。 在設置用於格式化“價格”列的“價格”列,用戶遇到的數字格式丟失的“價格”列的“價格”之後,問題在設置自定義單元...
    程式設計 發佈於2025-04-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3