PythonでJSONデータを受け取りそのままJSONデータを表示させる

概要

JSONデータがPOSTされたらそのままJSONデータを表示させるPythonスクリプトです。 POSTでデータを受け取る際にどういったデータが送信されてくるのか検証をおこなう際に便利でした。

リクエストを受け取るPythonスクリプト

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json
from http.server import BaseHTTPRequestHandler
from http.server import HTTPServer

import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

class LogHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.send_response(200)
        self.end_headers()
        length = int(self.headers['Content-Length'])
        data = json.loads(self.rfile.read(length).decode('utf-8'))

        print(json.dumps(data, indent=2))

スクリプト実行

json-reciever.py といった名前で以下のようにスクリプトを動かします。

python json-reciever.py

これで1234番ポートで待受け状態になります。

JSONデータをPOST

例として以下のJOSNデータを別ターミナルからPOSTしてみます。

curl -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"user":{"first_name":"hoge","last_name":"test","email":"test@example.com","role":"admin"}}' \
http://127.0.0.1:1234/

表示結果

以下のように表示されどういったJSONデータがPOSTされてきたかが分かるようになります。

{
  "user": {
    "first_name": "hoge",
    "last_name": "test",
    "email": "test@example.com",
    "role": "admin"
  }
}