python POSTメソッドとレスポンス
はじめに
今回も人間のためのHTTPの続きで、POSTメソッドを使用して、レスポンスを表示してみる。
準備
サーバはFlaskでPOSTを受け取れるプログラムを実装してみた。
- postServer.py
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/postdata', methods=['POST']) def index(): payload = request.json app.logger.info(payload.get('name')) app.logger.info(payload.get('age')) return jsonify({"Language": "python"}), 200 if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=80)
POSTを行うクライアントプログラムも用意する。
- getClient.py
import requests payload = {'name':'getClient', 'age':'134',} r = requests.post('http://IP ADDR/postdata', json=payload) print(r.url) print(r.text) print(r.status_code)
実行
プログラムの実行結果
- クライアント
$ python postClient.py http://IP ADDR/postdata { "Language": "python" } 200
- サーバ
[2021-04-05 12:33:39,382] INFO in postServer: getClient [2021-04-05 12:33:39,383] INFO in postServer: 134
ステータスコードも200が返ってきており、jsonifyでJSONに変換した値が、ちゃんと返ってきていることがわかる。
また、JSONで渡した値もしっかりログに表示できている。
まとめ
JSONで受けて、JSONで返すAPIの実装が簡単にできることがわかった。
PythonはライトにHTTPのプログラムがかけるので使っていて楽しい。
自分でサーバを実装して、クライアントを実装するというマッチポンプ的なことが楽にできる。