API就是提供資料交換的橋樑,而透過資料的交換,讓使用者可以整合不同的功能,進而提高程式的效率。中文是"應用程式介面",它的重要性非常之高,是讓不同軟體達成更加多功能互動的最大功臣。
正常來說分為兩個步驟,"請求"和"回應",請求是指定的命令,會包含 HTTP法,常見的像是資訊驗證、第三方驗證等,而回應則是回傳結果,回傳的基本上是 JSON格式法的資料,程式範例像:
{
"id": 1735448,
"password": 192837465,
"name": "zen",
"email": "zen0732@example.com"
}
常常應用在社群媒體的登入,像是 google、line、facebook、instsgram等皆為 API的應用,在不同平台達成資訊交換驗證的功能,大幅提升了使用者的便利性,而且在登入時還不用重新輸入姓名、帳號REST( Representational State Transfer) 原則密碼等,省去了不少時間。
真要說的話,基本上整個網路世界都和 API密不可分,像是電子簽章、企業自動化流程、線上文件申請,全部都在 API的範疇之下。
基本上,API 都遵循 REST規範,簡單介紹一下 REST就是前後端的分工絕對是分離而且清楚,並且交換時需要達成 UI介面和前後端資料的一致性,整體皆是分層的設計,故擴展性很高,簡單明瞭且彈性是它的優點。總結來說,API因為支援快取、介面一致性、無狀態的設計,所以效率非常高而便利。
統一命名
API 設計能確保一致性與安全性,多數的設計是統一命名規範,例如:REST API (e.g., /users, /orders/{id})。
統一HTTP
再來是使用統一的 HTTP 方法:
GET:讀取資料
POST:新增
PUT/PATCH:更新
DELETE:刪除
簡單明瞭的介面
URL 盡量清晰直觀,不要太複雜,顯示必要的參數即可。
打包文件化
給予 OpenAPI 說明,且回應必須完整,使資訊無誤差、易瞭解。
相容性
在路徑或 Header 中標示版本:/api/v1/users,避免 API 更新導致相容性問題。
維修與除錯
使用標準 HTTP 狀態碼回傳結構化錯誤訊息,並指定 JSON 格式,以便進行修復。
對於 API 整體的管理,首先要控制好使用者的存取權限,還有"千萬"要記得,API 雖然效率之好,但還是要設定好速度的限制,以防伺服器有過載的問題。而安全性的掌握也要避免硬編成固定的 API key,多使用環境變數且走 HTTPS,加強防護。然後要開放給第三方使用的話,必須提供 SDK 或 Client Library,並考慮好速度的限制。總結來說,API 的使用彈性非常之大,故也要注意好各方面的問題,預防崩潰或是資料不對等,遵循一致性、安全性、便利性的原則,在完整的流程下提供最高效率的應用。