Pythonでcurlコマンドと同等の処理を実行する方法をご紹介します。
目次
条件
- Python 3.6.8
Pythonのrequests
Pythonではrequestsによって、curlコマンドと同等の処理を実行することが出来ます。
例
curlコマンド例
$ curl -i -X POST \
-H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"useruser","password":"passpasspass"},"tenantId":"123456789123456789"}}' \
https://identity.tyo2.conoha.io/v2.0/tokens
Pythonのの場合
import requests
headers = {
'Accept': 'application/json',
}
data = '{"auth":{"passwordCredentials":{"username":"useruser","password":"passpasspass"},"tenantId":"123456789123456789"}}'
response = requests.post('https://identity.tyo2.conoha.io/v2.0/tokens', headers=headers, data=data)
print(response.text)
curlコマンドからPythonソースへの変換
以下のサイトを利用することで、curlコマンドからPythonソースへ簡単に変換することが出来ます。
レスポンスを見やすくする
以下のようなレスポンスで、「token」の部分を抜き出すことを考えます。
{"access":{"token":{"issued_at":"2019-08-30T05:03:56.516961","expires":"2019-08-31T05:03:56Z","id":"cXXXXXXXXXXXXXXXXXXXXXXXXXXXX","tenant":{"domain_id":"gnc","description":"v2","enabled":true,"id":"YYYYYYYYYYYYYYYYYYYYYYYYY","name":"gnct000000000"},"audit_ids":["ZZZZZZZZZZZZZZZZZZZ"]},"serviceCatalog":[{"endpoints":[{"region":"tyo2","publicURL":…
Pythonソースの例
response.json()とすることで、辞書形式に変換します。
import requests
import json
headers = {
'Accept': 'application/json',
}
data = '{"auth":{"passwordCredentials":{"username":"useruser","password":"passpasspass"},"tenantId":"123456789123456789"}}'
response = requests.post('https://identity.tyo2.conoha.io/v2.0/tokens', headers=headers, data=data)
data = response.json()
print(json.dumps(data["access"]["token"], indent=4))
実行結果
以下のように、必要な情報のみを見やすい形式で出力することが出来ます。
{
"issued_at": "2019-08-30T05:03:56.516961",
"expires": "2019-08-31T05:03:56Z",
"id": "cXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"tenant": {
"domain_id": "gnc",
"description": "v2",
"enabled": true,
"id": "YYYYYYYYYYYYYYYYYYYYYYYYY",
"name": "gnct000000000"
},
"audit_ids": [
"ZZZZZZZZZZZZZZZZZZZ"
]
}
参考
Qiita:curlコマンドをPythonやnode.jsのコードに変換する方法
https://qiita.com/tottu22/items/9112d30588f0339faf9b

