平時要取得資料、和其他系統溝通,最常使用的就是 API 了,馬上來示範 Python 透過 requests 套件呼叫 API 來取得和發送資料
使用網頁開啟後就會看到 JSON 格式的文字檔,在 Python 中可以使用 GET 的方式取得此資料:
參考資料:
GitHub - psf/requests
pypi - requests
Requests - Developer Interface
安裝套件
使用以下指令安裝 requests 套件
pip install requests
GET 示範
在 Github 上有一個 ruyut/TaiwanCalendar 儲存庫,可以使用以下連結取得政府機關辦公日曆表的資料:
https://cdn.jsdelivr.net/gh/ruyut/TaiwanCalendar/data/2024.json
使用網頁開啟後就會看到 JSON 格式的文字檔,在 Python 中可以使用 GET 的方式取得此資料:
try:
api_url = 'https://cdn.jsdelivr.net/gh/ruyut/TaiwanCalendar/data/2024.json'
response = requests.get(api_url)
if response.status_code == 200:
data = response.json()
print(f'取得資料成功,資料為:\n{data}')
else:
print(f'取得資料失敗,HTTP 狀態代號為 {response.status_code}')
except Exception as e:
print('讀取資料錯誤:', e)
POST 示範
依照 RESTful API 的說明,通常新增資料會使用 POST 方法,這裡使用 免費 API 測試服務 - JSONPlaceholder 練習要新增資料時的 API POST:
try:
api_url = 'https://jsonplaceholder.typicode.com/posts'
# 要新增的資料,放在 body 裡面
payload = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.post(api_url, json=payload)
if response.status_code == 201:
data = response.json()
print(f'新增資料成功,回應內容:\n{data}')
else:
print(f'新增資料失敗,HTTP 狀態代號為 {response.status_code}')
except Exception as e:
print('新增資料錯誤:', e)
常用參數
HTTP 方法 (HTTP Method)
在上面示範的 requests.get 和 requests.post 中, requests. 後面接的就是 HTTP 方法, 除了 get, post 以外,requests 還有許多方法可以使用,總共有以下幾種:- get
- post
- options
- head
- put
- patch
- delete
api_url = 'https://jsonplaceholder.typicode.com/posts/1'
response = requests.delete(api_url)
HTTP 標頭(HTTP header)
常見的 Cookie, 請求體類型(Content-Type), 身份驗證的 Token(Authorization) 等都是放在標頭中,使用方式如下:
headers = {
'Content-type': 'application/json; charset=UTF-8'
}
response = requests.post(api_url, json=payload, headers=headers)
參考資料:
GitHub - psf/requests
pypi - requests
Requests - Developer Interface
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com