Pythonでcurlコマンドと同等の処理を実行する方法
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
https://curl.trillworks.com/ はリンク切れしてました。
https://curlconverter.com/ が代わりに使えます。
ご連絡ありがとうございます。
記事を更新いたしました。