在人力銀行上下關鍵字-後端工程師,工作要求一欄內常出現「串接API」、「撰寫restful API」等,到底API是甚麼,可以拿來幹嘛,剛好筆者日後也打算用Google Maps API來做個專案,就先用這篇來說明跟記錄流程吧!
Ps:最近心情很像回到碩士求學的時期,為了追一個答案,反而追出更多不懂的問題(哭),但為了能成為獨當一面的工程師,還是要繼續追阿!!只能偷偷期許API以後可以變成我的的KPI了。
甚麼是API
API的全名是Application Programming Interface,中文直譯應該是「應用程式介面」。Interface就是介面,透過使用介面的操作,可以更輕鬆、更有感覺的跟某個不同領域的世界做溝通,但不需要理解太多背後實際運作的機制。例如,按下按鈕就有咖啡可以喝、按個3就自動幫你微波3分鐘。
來試試舉一反三,以上面的例子來看,API是應用程式介面,應該就是用來操作程式用的吧? 就像上面說的,按個鈕就能可以完成想做的事,可能就像小算盤直接按幾個按鈕就能運算吧? 登登!答案其實不太對,在電腦的世界中,給使用者操作或用來看結果的畫面,叫做GUI,全名是Graphical User Interface,中文又稱「圖形使用者介面」。使用圖形介面,讓使用者像用咖啡機泡咖啡,按個滑鼠、鍵盤,就算不會寫code也能使用大部分的功能,完成日常的工作。
參考了不同人對API的解釋,有很多舉例蠻生動的,例如像服務生、像上面提到的咖啡機,我自己濃縮後整理後的見解是,API是為了實現不同平台或軟體之間的溝通或互動,例如要取得一份資料,例如庫存、交通即時時刻表等,需要先連接資料庫,初步大概可以想到的問題,可能像要輸入一大堆參數(sql、網路等),也會面臨到管理上的安全性問題、資料格式等問題。當透過API的操作,程式開發人員可以透過簡單的API指令,替代在不同環境中,下一堆複雜的參數跟指令。雖然不一定是圖形介面,但對於工程師而言,已經省略好幾道步驟了,能更直接以使用者的角度,思考要怎麼下指令,這樣是不是跟上面提到介面的概念很像了!用一句話來說明API就是,「提供開發人員訪問一組程序的方法,但不需要訪問原始碼跟了解背後的機制」。另外,為了因應越來越複雜的使用者需求,要如何降低程式的耦合度就變成重要的課題,透過API可以依照功能性進行區分,也可以因應商業需求組合。開始有些大型的API開放平台出現,例如接下來要提到的Google Maps API、公共運輸整和資訊流通服務平台等,以下是筆者想到API常見能做的事情:
- 查詢資料庫
例如:客戶(開發端)可以取回各種資料,並依照自己的需求,加值成有價值的產品或網站。
- 傳送特定的格式的文件,如json、xml
- 兩應用程式間的數據共享
每個人寫程式多少都會有自己的習慣,每家公司做的API命名方式也都有自己的規則,如果運氣很好,說明文件講的很清楚的就謝天謝地,但如果遇到部分描述或沒有敘述的,就是磨練自己功力的好時機了(笑)。除了說明文件之外,亦產生了restful API的概念,以一個公定的、較多人認可的的規範來寫API,可以協助開發者降低在開發過程遇到一堆奇怪的問題,最近還看到一個好像很潮的關鍵字GraphQL,不過這些筆者都著墨不深,哪天有能力了才來回顧XD。
Google Maps Platform
Google真的好猛,不知道這輩子有沒有進去Google的機會(癡人說夢XD),除了很多好用的應用程式外,各種類型的API都快速開發出來了,像機器辨識(Version API)、翻譯(Translation API)、地圖(Map API)等,筆者日後的專案打算串接Google Maps API,但!因為Google Maps API是會收費的! 所以要先申請金鑰,所以這章節就紀錄如何取得金鑰。
先連到Google Maps Platform,在網頁左上角可以看到Platform,代表這是一個平台,裡面會有很多同屬性但不同職責的API。把滑鼠移到說明文件,可以看到這個平台上,依照使用需求的大方向,大分類為Maps、Routes、及Places,其中又針對更細節的工作內容,分別撰寫成一隻一隻獨立的API。首頁及說明文件中,分別有簡單的描述跟操作說明。使用不同的API,會要求不同參數,將參數傳入API後,就可以取得該API的結果,可能是圖片、可能是文字,這邊筆者挑了幾個玩一下,像Maps Static API會回傳一張圖片的連結、Places API會回傳搜尋地點的相關資訊,例如店名、星數、地址、評論等,底下又分成好幾種搜尋模式,如Text、Nearby。
拉到首頁最下方,點選啟動主控台
一開始系統會自動建立好一個My First Project,一個專案可同時開啟多個API服務,例如同時開啟Static Map API、Geocording API,完全是取決於自己的需求決定的。點擊My First Project,會跳出建立專案的畫面,建議先建立一個新的專案,避免日後專案一多就搞混了,每個帳號會有固定的專案數量,所以也不要亂開一堆。
專案建立好後,會出現與Google Maps相關的API可選,點選進去後,再按下啟動就正式使用這個API服務了唷。過程中會要求輸入一張信用卡號,確認後google會自動刷一筆40元確認該張卡可用,然後馬上退刷,所以應該會收到簡訊或mail的通知,不是盜刷請安心享用!一開始使用google都會送一些免費的額度,筆者這次測試是贈送一年約台幣9000元,一年內用完即可,日後會根據使用request次數計算費用。
如果日後想在專案裡啟用更多的API服務,可以在左側的「API和服務」選單中,找到「資料庫」,點進去後找自己想新增的API服務,按下開啟就可以了。
在左側的選單中,「API和服務」中還有個「憑證」,裡面會顯示這個專案的API金鑰。請小心保存自己的金鑰,google帳單只認金鑰不認人,金鑰流出去錢包縮水的可是自己,像前陣子的口罩地圖事件,如果沒有遇到貴人幫忙,可能就真的GG了。為了保險起見,像筆者就綁定了一張額度最低的信用卡XD,假設真的很雖小的出事了,至少爆了也還有個上限。此外,按下API金鑰右邊的編輯圖形按紐,可以針對該金鑰做一些限制,例如只有某網址、或某IP才能使用,也是對金鑰多做一層的限制。
今天紀錄就先到這邊啦,下篇再記錄如何取到Google Maps API裡面的資料。