API 是什麼 ?
這是寫給完全不懂什麼是 API 朋友,像是學生、行銷、設計,比較多都是在敘述 API 是什麼的理念,以及怎麼運作,不會有深入討論 API 的處理方式,以及如何寫 API 讓跨系統溝通的技巧,本篇都是在敘述 API 的概念以及使用情境。
API 為 Application Programming Interface 的簡稱
所以本篇文章有「 三不政策 」
不討論技術
不需工程師背景
不教你怎麼操作 API
所以來看技術的朋友,你們可以先轉台了,剩下的時間讓我們這些技術小白慢慢咀嚼。
好,那我們來開始 !
API 的用意就是讓兩套軟體的資料可以互傳。
API 為跨系統的數據溝通橋樑
什麼意思?
很多公司都會用 API 來擴展他們公司的成長與事業,試想一下,早期的程式都是封閉的,你若希望延伸內部程式的功能,就可能必須請工程師土法煉鋼的方式開發出來,但是有了 API 的串接之後,你可以輕易的去購買或使用另外一套有符合公司想要的軟體,再把資料從原本內部的程式互傳到這個軟體上,光是這裡,就可以減少公司開發的時間成本,加快流程的效率,間接的協助公司快速成長。
舉例:公司內部的系統沒有發 EDM 行銷的功能,行銷人員想要這個功能則需要請內部工程師來處理,或者購買另外一套行銷軟體,把名單從系統匯出後,再匯入到行銷軟體上,這就是「封閉」的概念。假設有 API 的串接,行銷可以直接在行銷軟體上直接篩選出公司內部系統的名單,無需再另外匯出匯入的動作,光想到這裡,是否就覺得可以簡化行銷人員每天的工作呢?
有了 API,可將許多原本可能很封閉的軟體,有了更多的彈性,帶來生活上的便利,這些便利,你可能不知道,但他確實就是使用 API 呀!
那你說很便利,那可以說說看嗎?
當然沒問題!
若你是學生的話:查詢字典、翻譯。
若你想查詢今天會不會下雨或放晴天,來決定穿什麼,透過 APP 查詢天氣的 API,即可告訴你今天幾度、會不會下雨等。
若你想要寶可夢的粉絲,在玩寶可夢的時候,想要查詢出沒的地方以及機率,有網站已經統整好這些,並且是用 API 撈取的喔!
若你想要查詢最近上映的電影以及場次的時候,這也是透過 API 整合進來讓你方便查詢或篩選。
這些都是我們生活上很好的應用跟舉例。
API 運作的基本概念
API 之所以被設計出來,主要是為了解決「 不同軟體互傳資料 」的相容性,推出了 API 就有一個統一的規格,可以讓工程師去將資料匯入/匯出至不同的軟體或平台上,對工程師而言,API 是一個「 兩套軟體的對話橋樑 」。
從服務生工作理解 API
若我們把 API 擬人化放在現實的生活上的話,網路上最經典的案例,就是服務生,我們來看以下的案例:
你走進了餐廳,坐下來看完菜單了之後,想要點漢堡來吃,所以就舉手,請服務生過來點餐
服務生會走過來,紀錄了你想吃的餐點,之後再傳達給廚師
你可以把兩端不同的軟體想像成一個是你、另外一個是廚師。
API 就是服務生,在這過程中,服務生會紀錄你想吃的餐點、人數、桌號、座位等等的記錄下來。
之後可以等待廚師回傳給你的東西,也就是漢堡,再透過服務生(API)將餐點傳遞到你的桌上,這樣,我們就完成了一項 API 的對接,我們可以稱為:「點餐」。
從翻譯 APP 的使用理解 API
另一個案例,你回想一下翻譯 APP 是如何運作的:
你開啟 APP,設定好語言要從中文翻譯成日文
點擊翻譯按鈕,並開始說話「你好,我想要訂餐」
APP 這時會回覆「こんにちは、注文したいです」
以上這個情況,程式會將你所發出的中文聲音,透過翻譯的 API,去資料庫找出特定的語言編解好了之後,回傳給 APP 去做發音成日文的動作,這也是透過 API 達成的。
API 在數位環境的使用情況
現在這個資訊爆炸的時代,API 基本上無所不在,或許你沒有感受他在你身邊,但你可能每天都會用到它喔!我以下舉例一些例子給你參考:
分享貼文
今天的案例可能是一個比較注重健康飲食的人,逛了某個網站之後,覺得這篇「減肥的五大迷思」非常不錯,想要分享給朋友,於是就按了「 分享至臉書 」的按鈕,透過這個按鈕,執行了這個分享的 API 到你的社群媒體上。
試想一下,若沒有這個分享 API 的話,你得到臉書之後,將連結從網站複製下來,再另外貼在臉書上,光是這個動作,是否就花你幾秒鐘的時間,但這個若是 1、2秒就能處理的事情,不是相當有效率嗎?
使用第三方社群軟體登入或註冊
好比說,你在購物網站使用「 臉書登入 」、「 LINE 登入 」,這背後用的就是「 驗證 API 」,這可以讓一個購物網站去將你臉書或 LINE 的身份,回傳回去,背後有可能會帶入你的姓名、電話、電子郵件等,這也就間接達成無需你填寫一堆資料,就可以註冊成會員了,因為你的資料都已經從另外一個地方拷貝過來了。
若沒有第三方社群軟體的登入 API 可以使用,就會回到早期我們要為每個網站註冊會員的時候,都需要輸入帳號與密碼註冊,而我相信你跟我一樣,都會常常忘記密碼,導致在登入的過程中使用者體驗就會大幅下降,而有了這社群媒體的登入串接到網站之後,知否整個就便利了許多,不用常常記密碼了呢?這對於我們要註冊帳號,帶來了非常大的便利性!
哪裡可以看到大量的第三方登入?
遊戲 - 你在玩手遊的時候是否有選項讓你用臉書或 LINE 登入?
購物網站 - Momo、PCHome 都可以看到
除了以上幾個之外,你還有在哪邊看到可以透過社群媒體登入的呢?
查詢機票、訂房、比價網
我們要出去旅遊的時候,常常會先上 Eztravel、Kayak、Skyscanner 等網站來查詢每間航空公司最優惠的價格。
要做查詢機票這個動作,相信你都必須提供時間點、地區、跟人數等,這個就是網站會透過 API 的方式,將各個航空公司的網站結合起來了之後,透過一個更直覺的方式呈現資料給你。
是不是透過這些網站,結合了「 查詢機票 API 」,你就能一目瞭然的知道哪家航空最為便宜、停靠點、時間等等的呢?
假設沒有這些 API 的話,若你想要買票,是否得親自到旅行社或自行上各自航空的網站比價做功課呢?
查詢天氣
無論你是用嘿 Siri、OK Google、還是手動用 APP 查詢,有沒有想過這些天氣預報的資料是怎麼來的?這些都是用 API 的方式,透過你輸入的地點跟時間,來紀錄你想要的資訊,再回傳到主機,透過你提供的資料,回傳正確的資訊。
你會問說,那他若不知道我的地點,是否就無法給出天氣預報?這是理所當然的,無論你是用定位的功能,還是手動輸入的方式,你都要給出一個地點的條件。當然,若你的 APP 裡面有內選許多國家或地區的話,你也可以選完之後再查詢,但你有看到重點嗎?你一定得挑選一個地點或地區呀!
以上這個行為你可以簡稱「 查詢天氣的 API 」。
在天氣變化多變的台灣,特別是北部的朋友們,是否都會查詢天氣來決定今天要不要帶傘、或穿什麼呢?
線上付款的流程
若你有在線上購物過,一定有體驗過線上結帳的流程。
其實就不外乎就是輸入個人資料、運送資料、結帳方式(信用卡或貨到付款等),結帳完成等商品寄到你家或到超商取貨呢?
如果我們來剖解這個流程的話,你可以想像:
輸入個人資料與運送資料,是為了讓系統能紀錄商品要寄到哪裡去。
能夠線上付款的話,中間的串接會有第三方的金流廠商、或者銀行提供的付款閘道,將你所輸入的資料送出後,去銀行那邊驗證你的付款方式是否成功或失敗,再回到網站呈現付款的狀態。
我們可以稱這個為「 付款 API 」、「 訂單狀態 API 」等等的。
你是否也無法聯想到原來每天在使用的都會用到這些 API 呢?
在數位 2.0 的環境下,我們多了非常多便利的支付方式,而且讓我們購物下單也方便許多,假設少了這些串接,是否反而不習慣呢?
總結
API 其實就發生在我們每天生活的情境,無論你是要用手機:查詢資料、訂餐、付款、玩遊戲、逛社群媒體,這些背後其實都有一大串的 API 程式碼無形中,透過網路連到各自的主機伺服器上做資料互傳的動作。