**一、什么是API?
**
對于普通吃瓜而言,API是到底是個啥真心聽不懂。下面我們來看一下實例:周末想出去玩,自已不想太累,索性打車,到了車上你告訴司機,去某某地方,司機明白了,直接將你送到指定位置,而無須你去考慮如何走的問題。這里司機提供的是打車服務,服務的提供者就是司機,你就是服務的調用者或者使用者。
我們再來以IT的視角來描述下API是個啥?API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供一種訪問函數的能力,而又無需訪問函數內部的源碼或者理解內部編寫的細節。
如果你來對比一下,可以發現打車服務和訪問函數的能力非常類似。API實質上就是為別人或第三方提供服務的接口。
二、為什么會產生API?
前面說到API是為第三方提供服務的接口,那為什么軟件需要API呢,我們可以從軟件的提供者、使用者、開發者等幾個角度來說明:
從軟件提供者的角度來講,特別是“平臺型”軟件提供者,提供API供第三方應用程序來調用,可以形成生態,才能更有競爭力。如百度AI開放平臺提供語音、圖像、人臉與人體識別、視頻等技術的API,打造全球領先的人工智能服務平臺。。
從軟件使用者的角度來講,特別是大型電信運營商,在建設內部系統時,一般會尋求從多家軟件廠商采購,避免被軟件提供商鎖定,出現“結婚容易離婚難”的窘境。如運營商的運營支撐系統包含客戶關系管理系統、計費系統、呼叫中心、合作伙伴關系管理系統、ERP系統等,通常是幾家軟件提供商共建整個運營支撐系統。
從應用開發者的角度來講,特別是“內容聚合系統”之類公司,通過調用開放的API,可以直接調用API來做自己的應用,集成各大公司的內容,并基于此做更高層次的創新。如今日頭條聚合了各家公司的內容,外加大數據分析推薦系統,形成個性化的服務。
三、API的幾種形式
1.本地調用
我們知道在本地調用非常地簡單,例如實現如下3個值的相加,就可以寫一個簡單的函數,供主函數main()來調用。在執行過程中,調用是發生在同一CPU、內存地址空間:
2. RPC
那如果是不同機器上的不同程序間的調用應該如何來做呢?ANDREW D. BIRRELL在論文《Implementing Remote Procedure Calls》給出了一種解決方案:RPC(Remote Procedure Calls,遠程過程調用)。其主要思想是調用遠程機器上的程序就像在本地機器的地址空間中一樣。隱藏分布式環境重要的部分:對參數和結果的編解碼、消息傳遞以及保留過程調用的語義。其基本流程圖如下所示:
①User以本地調用函數的方式去調用User-stub;
②User-stub生成消息并調用RPC Runtime;
③RPC Runtime將消息發送給遠程RPC Runtime;
④遠程RPC Runtime將請求消息交給Server-stub;
⑤Server-stub提取參數并調用Server;
⑥Server執行業務邏輯,并將結果返回給Server-stub;
⑦Server-stub生成響應消息,而后調用RPC Runtime;
⑧RPC Runtime將響應消息發送給客戶端RPC Runtime;
⑨RPC Runtime將消息交給User-stub;
⑩User-stub提取結果信息,返回給User。
3. RESTFUL API
隨著互聯網的發展,使得這ICT領域開始融合,“如何開發在互聯網環境中使用的軟件”成為一個課題,也就是Web 應用應該如何運轉?Roy Thomas Fielding認為“一個由Web頁組成的網絡,用戶通過選擇鏈接在應用中前進(狀態遷移),導致下一個頁面(應用的下一個狀態的表述)被轉移給用戶,并且呈現給他們,以便他們來使用”,并在論文《架構風格和基于網絡的軟件架構設計》給出了一種解決方案:REST(Representational State Transfer,表現層狀態轉化)。其主要特點為資源、統一接口、URI、無狀態。這里說明下資源和統一接口即:
u 資源:將網絡中任何實體都看成資源。可以是一段文本、一張圖片、一首歌曲、一個視頻。其具體的體現形式:文本可以用txt、HTML、XML、Json或二進制等格式表現。
u 統一接口:REST架構風格規定,數據的增刪除查改對應于HTTP方法,統一了數據操作的接口,如GET用來獲取資源,POST用來新建資源,PUT用來更新資源,DELETE用來刪除資源。
總的來說,REST可以理解為:使用URL表示資源,使用HTTP的GET\\PUT\\POST等方法進行資源的操作。
-
API
+關注
關注
2文章
1518瀏覽量
62448 -
源碼
+關注
關注
8文章
653瀏覽量
29508 -
函數
+關注
關注
3文章
4346瀏覽量
63012
發布評論請先 登錄
相關推薦
vc++ api函數 (Windows API大全)
JDBCTM 2.0 API
使用Java API技巧分析
分析API都有哪些特點
如何使用API_api接口有什么優點
REST API是什么,如何使用REST端口
![REST <b class='flag-5'>API</b>是什么,如何使用REST端口](https://file.elecfans.com//web2/M00/31/11/poYBAGIOHL6AbeeVAAIlinoYBq8424.png)
什么是API,不同場景中的API
API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API
企業怎么選擇API網關
![企業怎么選擇<b class='flag-5'>API</b>網關](https://file1.elecfans.com/web2/M00/88/8D/wKgaomRsLXCAJ_xvAAAWyc24u8s958.jpg)
api接口怎么使用
api網關 kong 教程入門
![<b class='flag-5'>api</b>網關 kong 教程入門](https://file1.elecfans.com/web2/M00/AD/6F/wKgaomVNpTqAMAbcAAIZwsLvplM107.jpg)
華為云發布 CodeArts API,為 API 護航
![華為云發布 CodeArts <b class='flag-5'>API</b>,為 <b class='flag-5'>API</b> 護航](https://file1.elecfans.com//web2/M00/E4/92/wKgaomY86P6AOIPEAAOFWfXpS4Y074.png)
評論