初めに
PythonでAPIを叩く際に, HeaderやBodyの指定の仕方でハマった記憶があり、知識の整理も兼ねて,
- Headerの指定方法
- Bodyの指定方法
について整理します。
基本的にAPIを叩く際には、Headerで認証がおり、Bodyでパラメータを指定してAPIを叩く形式が基本です。
叩くAPIによって若干HeaderやBodyの作成方法が異なるかもしれませんが、筆者が最近使用した事例ベースを一般化させた形式で記述します。
Sampleコード
# import module
import requests
# アクセストークンの定義
token = hogehoge
#Headerの作成
headers = {
'Content-Type' : 'application/json',
'Authorization': 'Bearer {}'.format(token),
}
# bodyの作成
body = {
"param1": hogehoge,
"param2": hogehoge,
"param3": hogehoge,
"param4": hogehoge,
}
# URLの定義
url = 'https://hogehoge.com'
# getメソットでAPIを叩く
res = requests.get(
url = url,
json = body,
headers = headers,
)
各コードの説明
Headerの作成について
# アクセストークンの定義
token = hogehoge
#Headerの作成
headers = {
'Content-Type' : 'application/json',
'Authorization': 'Bearer {}'.format(token),
}
上記コードがHeaderの作成コードになります。
Headerとは主にAPIを叩く際に、クライアント(ユーザー)を認証するために必要になるものです。
作成の仕方については、仕様書に従うとしか言えないのですが、Content-Type, AuthorizationについてがどのAPIでも求められるが基本です。
形式はjsonの形式で指定します。
bodyの作成方法について
# bodyの作成
body = {
"param1": hogehoge,
"param2": hogehoge,
"param3": hogehoge,
"param4": hogehoge,
}
URLでbodyを指定する方法もありますが、そちらについては別記事を参照ください。
bodyを作成するのは極めて簡単です。json形式で各パラメータを指定するだけで良いためです。
ただ、私がハマったポイントとしては、bodyの指定の仕方です。
headerはheaders = で指定するのに, bodyはjson= で指定する点です。
筆者は最初にbody = bodyと指定していて、ずっとエラーが返ってきていました。
# getメソットでAPIを叩く
res = requests.get(
url = url,
json = body,
headers = headers,
)
以上がpythonでのAPIの叩き方になります。