什么是API接口,具體是什么意思?:作為軟件應(yīng)用而言,很多資源和數(shù)據(jù)不一定就是由其自身提供的,某些功能還是需要調(diào)用第三方提供的服務(wù),這其中就涉及到API接口:
作為軟件應(yīng)用而言,很多資源和數(shù)據(jù)不一定就是由其自身提供的,某些功能還是需要調(diào)用第三方提供的服務(wù),這其中就涉及到API接口的調(diào)用。
API是指應(yīng)用程序編程接口,我們通過API接口可以實現(xiàn)特定的功能,而不需要了解其內(nèi)部實現(xiàn)細節(jié)。可以把API接口理解為是特定服務(wù)的一種封裝,將服務(wù)封裝起來提供給他人調(diào)用,這樣一來很多功能不需要從新開發(fā)。
舉個例子,我們想要知道一周天氣如何,如果由自己來實現(xiàn)這個功能很難,因為天氣數(shù)據(jù)只有氣象部門才知道。那該如何知道天氣信息呢?氣象部分提供數(shù)據(jù)API給我們使用,我們只要輸入地區(qū)就會知道該地區(qū)一周的天氣情況,但我們并不需要了解這天氣預(yù)報是如何實現(xiàn)的。
另外,不同系統(tǒng)和編程語言之間的數(shù)據(jù)通訊往往也采用API形式進行數(shù)據(jù)交接。
上面我們說到了,API其實就是一類服務(wù)的封裝。我們可以使用不同的編程語言編寫API,開發(fā)習慣和編程語言的不同導致API風格也存在差異。常見的API有以下幾種形式:
1、HTTP類型接口
基于HTTP協(xié)議提供的API,這類API常常以“網(wǎng)址”形式提供的,像現(xiàn)在主流的RESTful就屬于這類接口。
2、RPC接口
RPC它是指遠程過程調(diào)用,將一部分代碼邏輯放在遠程服務(wù)器上部署,然后在需要的地方調(diào)用即可(調(diào)用遠程方法就像調(diào)用本地方法一樣),本質(zhì)上是Client/Server模式,而且支持多種協(xié)議和數(shù)據(jù)傳輸方式。
3、Web Service 接口
Web Service并不具象地指某種API,我們將以WEB形式提供的服務(wù)都稱之為Web Service,像RESTful也屬于Web Service。
以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗,歡迎關(guān)注我了解更多科技知識!
API(接口)是什么?舉個常見的例子,在京東上下單付款之后,商家選用順豐發(fā)貨,然后你就可以在京東上實時查看當前的物流信息。京東和順豐作為兩家獨立的公司,為什么會在京東上實時看到順豐的快遞信息,這就要用到API,當查看自己的快遞信息時,京東利用順豐提供的API接口,可以實時調(diào)取信息呈現(xiàn)在自己的網(wǎng)站上。除此,你也可以在快遞100上輸入訂單號查取到快遞信息。只要有合作,或是有允許,別的公司都可以通過順豐提供的API接口調(diào)取到快遞信息。既然有多方調(diào)用,那提供一個統(tǒng)一的調(diào)用規(guī)范會方便很多。
我們看下百度是怎么給出API的定義的:
API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。
從百度定義中,我們先劃下重點:函數(shù)、 提供應(yīng)用程序與開發(fā)人員 、無需訪問源碼、例程 。注意這四個短語。其中,例程是某個系統(tǒng)對外提供的功能接口或服務(wù)的集合,本文著重說下API的數(shù)據(jù)服務(wù)功能接口。
首先,下面的文章我會先演示怎么通過瀏覽器,不需要編程、不需要訪問源碼,來調(diào)用免費的API接口,達到讓你怎么使用最簡單的接口;
然后,會演示怎么通過編程去調(diào)用接口;
最后,演示開啟WEB服務(wù),寫一個簡單的API接口,以體現(xiàn)出API的函數(shù) (y=f(x)) 功能。
你也可以復制代碼試下。通過你自己的嘗試,你會了解到些后端、前段的東西,并加深你對API的理解。那么我們就開始吧,先上一個圖:以API提供信息(數(shù)據(jù))的功能,看下數(shù)據(jù)是怎么流動的。如果給API一個具體的位置的話,就位于下圖中央。
為了更改的理解,我穿插一個故事角色。假如,世界太大,身處非洲大陸的你想去看看,成為了一個水手,被一位著名的航海家?guī)トミh航(你掌握著船上唯一一臺衛(wèi)星電腦),途中不免航海家會讓確定下城市的經(jīng)緯度。這時航海家讓你去確定下深圳市的經(jīng)緯度。
1、你是個人肉API
這時,你能想到簡單的辦法就是去百度搜索一下。 除了航海家,船上的高級水手、大副,估計都有可能向你問,這個時候,其實你就是一個接口,大家都來向你獲取地理位置信息,作為接口,你本身不產(chǎn)生信息,你只是信息的搜集者、傳遞者,提供人肉數(shù)據(jù)服務(wù)。
2、使用免費的經(jīng)緯度API接口
在百度搜索的過程中,眾多網(wǎng)友給出的經(jīng)緯度不一致,你要反復對比,去辨真?zhèn)巍r間長了,你可能會覺得大家都問位置,太煩了,我這個人肉API效率太慢,有沒有更快的方式。
這時你發(fā)現(xiàn)了一個阿里云的一個免費的API接口:http://gc.ditu.aliyun.com/geocoding?a=深圳。你在瀏覽器地址欄輸入了這個URL,果然得到了正確的經(jīng)緯度,你又把URL中的深圳改為了別的城市,發(fā)現(xiàn)也可以查到。這時,通過這個接口,你給大伙確定位置的效率大大提升。
3、你不滿足于此
你覺得這個接口太好了,剛好你會點Python,何不寫點代碼,注意這個時候你的角色發(fā)生了變化:你由一個人肉API轉(zhuǎn)變了一個開發(fā)人員(注意這個是百度API定義中的關(guān)鍵詞),你現(xiàn)在的目標是寫代碼,能夠自動獲取到這個某個地方的經(jīng)緯度
到這里,我們再來回顧下API的百度定義。目前,你作為一個開發(fā)人員, 具備通過寫了幾行代碼訪問“阿里云經(jīng)緯度接口”的能力, 你無需訪問這個API的源碼、不需要理解這個API是怎么弄成的 。也就是,不管是通過瀏覽器,還是編程語言,目前你已經(jīng)會用簡單的API了。
4、在會用簡單API的接口后,你進一步想知道它的內(nèi)在機制是什么
建立在會用的基礎(chǔ)之上,那么API的源碼、其內(nèi)在機制是怎么回事?目前你能調(diào)用經(jīng)緯度的API,簡單的獲取到位置還不夠,你可能自己想寫一個API接口,不緊緊提供位置信息,同時附加上對這個城市的介紹
執(zhí)行web_server.py,執(zhí)行后就會開啟一個web服務(wù)
接著,我們在瀏覽器輸入http://192.168.199.204:8888/?id=深圳
注意,我自己的電腦局域網(wǎng)IP是192.168.199.204,需要替換成你自己電腦(或虛擬機)的ip
從上圖看,我們實現(xiàn)了,和”阿里云經(jīng)緯接口“的相同功能,并且獲取到了除經(jīng)緯度,還有對城市的簡單描述。隨著航行越來越多,你讓船上的大伙不僅了解了地理位置信息,也了解了每個城市的經(jīng)濟人文情況。隨著信息數(shù)據(jù)的增多,特別需要一個東西能先把數(shù)據(jù)先保存起來,用到的時候,API再直接調(diào)用。
5、數(shù)據(jù)儲存,調(diào)我所需
上面我們模仿了阿里云的API,自己搭建了一個web服務(wù),提供了一個更為詳細的API地理位置信息服務(wù),F(xiàn)在想一下,我們的代碼里只有深圳、青島兩個城市,還有很多沒提到的城市,另外,城市還有經(jīng)濟發(fā)展情況、飲食文化等。我們把深圳、青島兩個城市信息存入到mysql里。
存入之后,我們從mysql里直接拿數(shù)據(jù),通過API直接展現(xiàn)在到瀏覽器中。改動 web_server.py腳本中的
保存web_server.py后,再執(zhí)行重啟下,瀏覽器地址輸入http://192.168.199.204:8888/?id=深圳,出現(xiàn)與第4步同樣的結(jié)果,但這次是從mysql中拿數(shù)據(jù),通過API接口展示到瀏覽器的。至此,你不僅會使用API,而且也通過tornado開啟web服務(wù)、開啟了一個API查詢接口。
最后再總結(jié)一下,從上面的文中,首先我大概畫了一張圖,結(jié)合數(shù)據(jù)的流動,描述了API的位置,接著用了一個故事從一個信息的搜集者,怎么利用現(xiàn)有的接口,去提供一個更棒的接口。當然這個太簡單了。但我覺得也能說明API的基本意思,生產(chǎn)環(huán)境中API要復雜的多牽涉到數(shù)據(jù)的復雜性、接口的穩(wěn)定性、高可用、還有安全性。
什么是API接口?是個錯誤的說法。
應(yīng)該是“什么是API”?
這種問題表述方式就說明了問題的本質(zhì),就是API這事,用中文表述不太“順暢”。
日常交流,特別是網(wǎng)絡(luò)上交流中,解釋API是什么意思,與交流過程的上下文相關(guān)性極強。在交流者彼此了解的背景下,這種概念的模糊性不會帶來任何理解困難。
非專業(yè)人員,不吹牛,真的沒必要理解什么是API。
華裔女賭王就此沒落,生前讓所有 濃情端午粽飄香,青浦邀你“云體 上海:“云端”展現(xiàn)端午節(jié)文化內(nèi) “甜咸大戰(zhàn)”!明星藝人們喜歡什 如何做一個男人喜歡的情人(如何 當你和你同時出現(xiàn)在同一個場景中 如何在昏暗的光線下設(shè)置快門速度 教育在生活中的價值是什么? 世上做壞事的人死后會面臨什么因 拜登就任總統(tǒng)后的第一步是什么? 同意/不同意:人生最重要的目標 二戰(zhàn)后,德國在調(diào)和分歧方面做得 亞伯·林肯恨白人嗎? 一個編輯能把你的故事毀得有多嚴 現(xiàn)在的iPhone6還能堅持再用一年 曹操為什么不殺司馬懿? 現(xiàn)在買房是不是最便宜的時候,現(xiàn) 我身邊的農(nóng)業(yè)銀行營業(yè)廳關(guān)了,AT 歐洲媒體評選CBA最有實力球員, 榮耀play的6+128和榮耀8X的6+128 螞蟻集團是科技公司還是金融公司 請問機友華為mate30P與華為mate3 聽說老詹修剪一次指甲需要5小時 為什么說寶寶“一月睡二月哭三月 戴笠人稱戴老板,這個是怎么叫出 沒有工作能一次性補繳社保么? 我想知道定向師范生和免費師范生 肺癌引起的咳嗽是怎樣的呢? 5000mAh電池的5G手機推薦嗎?要 恒大亞冠表現(xiàn)“差強人意”,你覺