Python 呼叫 API 示範(requests)

平時要取得資料、和其他系統溝通,最常使用的就是 API 了,馬上來示範 Python 透過 requests 套件呼叫 API 來取得和發送資料

安裝套件

使用以下指令安裝 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

留言