白話科普,10s 了解 API

2021-10-10 06:12:06 字數 3318 閱讀 7803

作為一名又拍雲的技術支援工程師,小拍每天都會接收到很多客戶的提問。這其中,有很多客戶會問:「小拍,請問雲儲存上傳除了使用控制台的檔案管理和 ftp 工具之外,有沒有其他的途徑進行上傳呢?」

「有噠,您可以呼叫 api 介面來進行上傳哦。」

「請問,什麼是 api 介面呢?我要怎麼呼叫呢?」

別著急,這就為您介紹 api 介面。

首先,我們先來看一看 api 介面的定義:

從定義中,我們先劃下重點:函式、 提**用程式與開發人員、無需訪問原始碼、例程。其中,例程是某個系統對外提供的功能介面或服務的集合。

看完這個定義是不是感覺自己看了個寂寞,這解釋跟不解釋沒有差別啊?好啦,不要擔心,小拍來給大家直接了當的說一說。

api 其實可以理解為是接收要求的信差,通過 api 介面,我們告訴系統(例程)想要做什麼,系統再把處理結果響應回來。

如果用乙個現實生活中的場景來舉例說明,那麼餐廳的服務員其實就是乙個典型的 api 。想象一下你正坐在餐桌前,面前桌子上有一張點菜用的選單,點好菜後,交由廚房進行處理。但現在少了乙個關鍵的鏈結點,如何把我們的單子送到廚房,再把食物送到我的桌上呢?

這就是服務員(api)登場的時候了。服務員就是這個信差,他會傳遞你的要求或者餐點,把這些資訊告訴廚房(系統),廚房就會知道怎麼做,然後把餐品通過服務員端(響應)給你。

現在我們把這個原理應用到真正的 api 例子上來。

快遞單號查詢,這大家應該很熟悉吧。朋友通過順豐寄了一箱零食給你,並告知你了快遞單號,你就可以在順豐的官網上,輸入快遞單號進行查詢。順豐的系統接收到查詢,就會在系統中查詢對應快遞的資訊,響應給你。

但是,很多時候我們並不是直接通過快遞公司的**去查詢快遞資訊的。比方說通過**買的衣服,賣家通過順豐發貨,但我們可以在**上查詢到順豐快遞的資訊。那麼**是怎麼獲取到存放在順豐伺服器上的快遞資料呢?

沒錯,這裡就是使用了 api 。**可以通過順豐提供的 api 介面,來獲取存放在順豐伺服器上的快遞資訊,最後顯示在我們面前。

現在再看上邊的定義,是不是感覺好理解一些了呢?api 介面就是預先定義好的函式邏輯,提供給其他系統請求,然後返回結果的乙個東西。

在知道了 api 介面的作用後,使用 api 介面的原因也就一目了然了。舉個例子:你打算開發乙個打車軟體,需要在頁面上展現地圖,那你會怎麼做呢?

所以,對於軟體提供商來說,開放 api 並讓別的應用程式來呼叫,形成生態,軟體才能發揮最大的價值,才能更有生命力,同時別人也看不見**,不會傷害商業機密。

對於應用開發者來說,有了開放的 api ,就可以直接呼叫多家公司做好的功能來做自己的應用,不需要所有的事情都自己操刀,節省精力。

現在市面上開放的 api 介面,一般都是通過 http 請求呼叫的。例如,一些第三方提供的查詢天氣的功能,我們就可以根據第三方提供的 api 位址以及相關的說明文件,攜帶上請求引數,在瀏覽器中直接訪問使用。

接下來,小拍以又拍雲儲存上傳 api 為例,通過 curl 工具來完成乙個向雲儲存上傳檔案的操作。接下來會涉及到一些命令列工具以及**的操作,如果你對 curl 這個工具不太熟悉的話,也可以參考小拍之前的文章《雙劍合璧-掌握 curl 和 dig 走天涯》哦。

每個 api 介面根據作用不同,需要傳遞的引數也是不盡相同的。因此,我們在使用乙個 api 介面之前,最好先看一下官方文件的 api 說明。

通過文件介紹,我們可以看到如果需要請求雲儲存的上傳介面,我們需要使用 put 的方式,向 發起請求。其中儲存服務名和檔案的儲存路徑定義在請求位址中。並且需要攜帶 authorization 鑑權請求頭,來確保 api 的呼叫是合法的。

authorization 的生成,小拍使用最簡單的基本認證來進行演示。

根據鑑權文件介紹,curl 支援直接傳入操作員名和密碼來生成鑑權請求頭。

了解 api 介面呼叫的規則之後,我們就可以開始準備資料,來向雲儲存空間上傳檔案啦。

例如,小拍的桌面上有一張,小拍想把上傳到自己雲儲存空間下的 images 目錄下,儲存名為 lufei.jpg。

小拍的雲儲存空間名為 fileupload-upyun,操作員名為 hello,對應的密碼為 df4xhrbnpsvonu1dgdeturnchswa2z37,這樣,我們就有呼叫上傳 api 的必要引數了。

接下來,我們就按照要求,組裝 curl 的請求命令。

引數說明:-x 可以指定 curl 發起請求的方法

-u 對傳入的資料進行 http 基本認證,也就是使用者和密碼組和的base64編碼

-t 可以使 curl 讀取指定路徑下的檔案

這樣呢,我們就成功的呼叫了雲儲存的上傳 api 介面,通過介面上傳了一張本地的到儲存空間中。

不過,使用 curl 發起 http 請求,看上去總有一些麻煩,命令列也太***了吧,有沒有更加友好的介面呢?當時啦,使用 curl 只是其中一種的上傳方法,我們還可以通過其它方式,來向雲儲存 api 發起 http 請求。

上傳服務空間:操作員賬號:操作員密碼:儲存路徑:檔案選擇:

上傳

也歡迎你使用熟悉的程式語言,來嘗試呼叫 api 上傳介面呀。

service的啟動不能超過10s。

在android啟動的時候,我們開啟乙個service,結果在啟動過程中報錯。出現了如下的異常資訊。然後,我們將啟動的執行 放到thread執行,就解決了問題。08 08 09 22 17.820 e activitymanager 2099 anr in com.ztao.printer.serv...

華為暢享10與10s有什麼區別 哪個更好

華為在暢享10基礎上接連推出了暢享10plus和暢享10s兩個公升級版本,究竟是plus版更堅挺,還是super版更強悍?我們來看看華為暢享10s和10plus區別。華為暢享10s和10plus外觀區別 比起其他系列喜歡一脈相承的作風,華為暢享10系列選擇在外觀上各樹一派。前有華為暢享10的魅眼挖孔...

定時器簡單專案的實現 10s引爆定時

1.10s的 定時 名稱 10s炸彈 裝置 修改 無 日期 2018.7.25 功能 將共陽極的數碼管和p1埠相接,通過數碼管從9到0然後引爆。即利用分頻器發出聲音完成這一操作,分頻器接p2 4.include define dataport p1 定義p1埠 sbit spk p2 4 分頻器引腳...