iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Software Development

軟體開發養成計畫:以小程式實作深化開發能力系列 第 15

[Day15]讓程式與世界連線:API 串接與 JSON 處理攻略

  • 分享至 

  • xImage
  •  

開場

在前兩週的挑戰裡,我主要透過小程式學習程式設計的邏輯與技巧。但隨著開發的深入,我逐漸發現單靠「自己輸入資料」的程式還不夠,若能讓程式主動去網路上抓取資料,或是與外部服務互動,將會更貼近真實的應用情境,而這正是API串接的價值所在。
今天就來讓我們來談談現代絕不可或缺的API吧!


1.為什麼要學 API?

API (Application Programming Interface)也稱作應用程式介面,我們可以把它想成程式間溝通的橋樑,是因為它讓不同的軟體或系統能夠互相溝通、交換資料和功能
對開發者來說,API 是快速取得資料或服務的最佳途徑,應用面也非常多元,像是:

  • 天氣 API:查詢即時氣象
  • 金融 API:取得股價或匯率
  • 翻譯 API:快速進行語言轉換
  • 社群 API:存取 Twitter、YouTube 等平台資料

(1)API優勢

首先,API最大的便利性就是讓我們不需要從零開始開發每一個功能,大幅節省時間和精力。
此外,因為API種類多樣化的特性讓我們的應用程式能夠串接各種外部服務,從而獲得更強大的功能,整體上來說也更完整。
最後也是最重要的部分,在現今這個互聯網密不可分的時代,幾乎所有服務都透過 API 互相連接,無論是網路購物、叫車軟體還是雲端儲存,API 都是背後的核心技術,也代表著我們開發出來的應用程式能與其他服務無縫協作,用戶體驗更豐富了。

2.JSON 資料格式

JSON(JavaScript Object Notation) 是 API 最常見的資料傳輸格式,就像是不同系統之間溝通時使用的「共通語言」。

(1)JSON優勢

當應用程式向一個 API 發出請求時,API 通常會回傳一個用 JSON 格式組織好的資料。這種格式以直觀的語法來表達複雜的資料,非常適合程式處理。更棒的是,幾乎所有程式語言都內建或有函式庫可以解析 JSON,這讓不同程式語言開發的應用程式之間能夠順暢地交換資料,不受限於開發環境

(2)JSON 的基本結構包含:

  • 物件:用大括號 {} 包起來
  • 陣列:用中括號 [] 表示
  • 鍵值對:"key": "value"

以下提供範例:

{
  "name": "Ashley",
  "age": 20,
  "skills": ["Python", "API"]
}

在 Python 中,可以用 json 模組解析 JSON:

import json

data = '{"name": "Ashley", "age": 20, "skills": ["Python", "API"]}'
parsed = json.loads(data)
print(parsed["name"])  

這樣就能將 API 回傳的 JSON 轉換為 Python 的字典或列表,很方便操作。

3.API 串接流程

使用 Python 串接 API,最常見的工具是 requests 套件,只要掌握以下四個步驟,就能讓我們的應用程式與其他服務順利地溝通。
流程如下:

(1)了解 API 文件(Documentation)

在開始任何串接之前,必須先閱讀要使用的 API 文件。
它會詳細說明:

  • 有哪些功能可以使用(端點,Endpoints)?
    例如:取得使用者資料、發布貼文、上傳圖片等。
  • 發送請求需要哪些資訊?
    例如:需要提供什麼樣的參數(parameters)?是 GET 還是 POST 請求?
  • 如何進行身份驗證(Authentication)?
    例如:需要提供 API Key、Token 或是其他憑證。
  • 回傳的資料是什麼格式?
    大部分是 JSON,但還是要確認資料結構長什麼樣子。

(2)進行身份驗證(Authentication)

很多 API 都需要你先證明自己的身份,才能存取資料或使用功能。
最常見的方式有:

  • API Key:一個獨特的字串,通常在你的帳號設定頁面可以取得。
  • OAuth 2.0:一種更安全的授權方式,常用於社群網站登入。

我們會需要將這個身份憑證放在 HTTP 請求的特定位置,才能順利發送請求。

(3)發送 HTTP 請求(Request)

這一步是實際的對話過程,應用程式會向 API 的特定 URL(端點) 發送一個 HTTP 請求。
請求中包含了:

  • 請求方法(Method):
    • GET: 用來取得資料。
    • POST: 用來提交新資料。
    • PUT/PATCH: 用來更新資料。
    • DELETE: 用來刪除資料。
    • URL(Endpoint): API 提供的網址,用來指定你要使用的功能。
  • 請求標頭(Headers): 包含身分驗證資訊、資料類型等。
  • 請求主體(Body): 如果是 POST 或 PUT 請求,你通常會在這裡放入要提交的資料(JSON 格式)。

(4)接收與處理 HTTP 回應(Response)

當 API 伺服器收到請求後,它會處理我們的要求,然後回傳一個 HTTP 回應。
這個回應包含:

  • 狀態碼(Status Code): 告訴我們這次請求的結果。
    • 200 OK: 請求成功。
    • 201 Created: 成功建立新資料。
    • 400 Bad Request: 請求有錯誤。
    • 401 Unauthorized: 身份驗證失敗。
    • 404 Not Found: 找不到指定的資源。
  • 回傳標頭(Headers): 額外的資訊。
  • 回傳主體(Body): 這就是我們想要的資料,通常是 JSON 格式。

應用程式會解析這個 JSON 資料,然後將其中的內容拿來使用,例如:顯示在網頁上、儲存到資料庫等。

4.使用 API 的小提醒(補充)

在開始使用 API 前,需要先留意以下幾點:

  • (1)API 金鑰:許多 API 為了管理使用者並確保服務安全,會先要求註冊帳號才能取得 API Key。
  • (2)新手友善的免費 API:如果是剛接觸 API 的新手,非常建議從免費且功能簡單的 API 開始練習。這些 API 通常不需要複雜的驗證,回傳的資料也相對單純,像OpenWeatherMap、PokeAPI、Dog API都非常適合新手練習。
  • (3)注意 API 的使用限制:大部分免費 API 都有使用限制,如果請求太過頻繁,可能會被 API 伺服器暫時或永久地封鎖,因此在串接前一定要仔細閱讀 API 文件,了解它的使用規範,才不會在開發時遇到不必要的麻煩。

我們今天從 API 的基本概念,到資料格式 JSON,再到實際的串接流程,逐步了解了 API 如何讓不同系統順利溝通。掌握這些核心概念後,接下來就是動手實作的最佳時機!
明天,我們將一起實際操作,串接一個天氣查詢 API,親手打造一個能顯示即時天氣的小程式!


上一篇
[Day14]一週回顧 & 小程式升級:加上logging日誌功能
下一篇
[Day16]查詢今天要不要帶雨傘:Python 串接天氣 API
系列文
軟體開發養成計畫:以小程式實作深化開發能力17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言