【Python】Requestsを使ってPOST処理を作ろう!【サンプルあり】

Python

みなさんこんにちは、現役エンジニアのサメハックです

未経験から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フォローしてもらえると嬉しいです🦈

タイトルとURLをコピーしました