技術雑記帳兼日記帳

AWS、Python、Terraformの使い方をコッソリ

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のプログラムがかけるので使っていて楽しい。
自分でサーバを実装して、クライアントを実装するというマッチポンプ的なことが楽にできる。