前述
涼しかったり、暑かったり、よくわからない気候が続きますが、皆様如何お過ごしでしょうか。まぁーこれを読む人は暗号通貨関連の記事を読む人と異なると思いますので初めまして。今回は POST リクエストにURLパラメーターを付ける方法を備忘録として書きます。一般的には POST リクエストの場合だとリクエストBodyにパラメーターを入れるものだと思うのですが、まぁーAPIの仕様上仕方ないことなので従うことにします。
GET リクエストにURLパラメーターを付ける
https://shotanuki.com/?username=ユーザー&password=パスワード
上記のようなURLリクエストを何故かPOSTでしなければならない時ってありますよね?GETリクエストなら普通に下記のようなソースコードで終わりです。正直POSTリクエストもURLを文字列結合でやればできなくもないですが、あまりスマートなやり方ではないと個人的には思っています。
import requests params = { 'username': 'ユーザー', 'password': 'パスワード', } url = 'URLをかいてね' headers = {'User-Agent': USER_AGENT} # 書き換えてね res = requests.get(url, headers=headers, params=params) return res.text
POST リクエストにURLパラメーターを付ける
https://shotanuki.com/?username=ユーザー&password=パスワード
しかし、API側がPOSTリクエストを求めているならそれに答えねばならない。だって動かないんですもん。404却ってくるのですもん。
import json from urllib import request, parse params = { 'username': 'ユーザー', 'password': 'パスワード', } url = 'URLをかいてね' data = parse.urlencode(params).encode() req = request.Request(url, data=data) res = request.urlopen(req) encoding = res.info().get_content_charset('utf8') return json.loads(res.read().decode(encoding))
レスポンスがByte文字列で却ってくるので、上記の記述でDictで取得できましたー。
あとがき
最近いろいろなAPIを叩いてデータを取得し、データベースにぶち込んでいるショウタヌキです。暗号通貨関連のプログラミングは一切やっていませんが、いつかはやりたいなーと思ってます。FinTechとか何かかっこいいですよね、響きが。