みなさんこんにちは、現役エンジニアのサメハックです
未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。
Pythonの解説シリーズです。
今回はRequestsを使ってPOSTを行う方法について学んでいきましょう!
駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!
この記事を読むと・・・
- Requestsがインストール出来る
- HTTP通信(POST)ができる
HTTP通信(POST)をしよう!
環境構築
Requestsとは
PythonのライブラリでHTTP通信をするために使われます。
主にスクレイピングで使われますが、APIを叩くこともできます。
Requestsを使う構文
request.post(URL, オプション, データ)
# ■オプション
# headers
# timeout
# cookies
# params
例
response = requests.post("https://~~",headers={},data=testData)
Requestsをインストールしよう!
環境によってコマンドが若干変わるので、エラーが出たら上から順に入力してみてください。
どれかでうまくいくと思います。
$ pip install requests
$ pip3 install requests
$ pip install requests --user
$ pip3 install requests --user
実際に動かしてみよう!
■data-post.py
# HTTP通信用のパッケージ
import requests
# jsonファイル操作用のパッケージ
import json
# ユーザリストの宣言
userList = [
# key : value
{ "name": "サメハック", "id": "A001", "age": 29},
{ "name": "ねこハック", "id": "A002", "age": 31 },
{ "name": "いぬハック", "id": "A003", "age": 40 },
]
# POSTAPIのURL ★これはフリーのサンプルサイトです
POSTAPI = "https://httpbin.org/post"
# POST処理
response = requests.post(
POSTAPI,
headers = {"content-type":"application/json"},# ヘッダー型をjsonに設定
data = json.dumps(userList) # POSTしたいデータをjsonに変換
)
# ステータスコードが200の場合は正常終了
if response.status_code == 200 :
print("POST完了しました")
else :
print("POST失敗しました")
ターミナルで実行してみよう
Mac
〜 % python3 data_post.py
Windows
〜 % python data_post.py
ネット接続していない場合エラーになるよ!
おまけ:curlを使ってターミナルからHTTP通信
【curlでPOSTする構文】
curl -X POST -H ヘッダー -d データ 対象のURL
~ % curl -X POST -H "Content-Type: application/json" -d '[{"name": "さめハック", "age": "28"}, {"name": "Yamashita", "age": "35"}, {"name": "Akimoto", "age": "21"}]' https://httpbin.org/post
{
"args": {},
"data": "[{\"name\": \"さめハック\", \"age\": \"28\"}, {\"name\": \"ねこハック\", \"age\": \"35\"}, {\"name\": \"いぬハック\", \"age\": \"21\"}]",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Length": "100",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/7.64.1",
"X-Amzn-Trace-Id": "Root=1-60cd7ba4-3781134261352f4d164709b6"
},
"json": [
{ "name": "サメハック", "age": 29},
{ "name": "ねこハック", "age": 31 },
{ "name": "いぬハック", "age": 40 },
],
"origin": "152.165.84.77",
"url": "https://httpbin.org/post"
}
これでPythonと同じことができたよ!
まとめ
- Requestsライブラリを使うとHTTP通信が可能
- curlでも同じことが可能
満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈