Postmanでローカルサーバーの動作確認
pythonで作ったhttpサーバをいろいろ動かしてみたかったのだけども、動作確認をどうやってやろうかと。
そんな時見つけたのがPostmanというツール。
これを使えば試験的にやりたいHTTP通信の動作確認が何でも簡単にできちゃいます。
Postmanとは
PostmanはインドのPostdot Technologiesという会社で作られた、API開発やテストに特化したツールです。
任意のプロトコル(HTTP等)におけるリクエストを簡単に作成し、テストを実行することができます。
またリクエストの編集、レスポンスの表示、環境変数の管理などが簡単にできるような、直感的で使いやすいユーザーインターフェースを提供してくれているので、初心者でも容易に扱えます。
Postmanには、無料の基本プランと有料のプランがありますが、ローカルで試す分には無料で十分です。
詳細については以下を確認してください。
Postmanのインストール
Postmanは、Webアプリとデスクトップアプリの両方を提供しています。
今回は、デスクトップアプリをインストールし、登録やサインインせずに使用してみます。
まずは以下にアクセスし、インストーラ(Windows 64-bit)をダウンロードしてください。
以下のような画面が出てきたら、左下の「Skip and go to the app」をクリック。
以降はPostman起動時に本画面が出てくることはなくなります。
Postmanを使ってみる
pythonのhttp.server
を使用して、簡単な疑似サーバを用意しPostmanを使ってみます。
テストコード
httpモジュールの使い方なんかは別の機会に詳しく紹介しようと思います。
とりあえず今回はURL「http://127.0.0.1:8080/」に対し、GETとPOSTのHTTPメソッドでアクセス可能なコードだと思ってください。
from http.server import HTTPServer
from http.server import BaseHTTPRequestHandler
class CustomHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
print('requestline = {}'.format(self.requestline))
print('headers = {}'.format(self.headers))
self.send_response(200)
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()
self.wfile.write('Hello World'.encode())
def do_POST(self):
content_length = int(self.headers['content-length'])
print('requestline = {}'.format(self.requestline))
print('headers = {}'.format(self.headers))
print('body = {}'.format(self.rfile.read(content_length).decode('utf-8')))
self.send_response(200)
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()
self.wfile.write('Hello World2'.encode())
server_address = ('localhost', 8080)
httpd = HTTPServer(server_address, CustomHTTPRequestHandler)
httpd.serve_forever()
PostmanによるGETリクエスト
「Overview」タブの隣にある「+」をクリックするとリクエスト画面が出てきます。
「GET」がプルダウンとなっており好きなHTTPメソッドを指定できます。
「Headers」をクリックすればデフォルトの設定が確認でき、それぞれ消したり編集したり、ほかのフィールドを追加することも可能です。
URLを入力し、「Send」ボタンを押せばリクエストに対するサーバからのレスポンスが右下の画面に表示されます。
こちらはGETリクエスト受信時のpythonのコマンド画面です。
requestline = GET / HTTP/1.1
headers = User-Agent: PostmanRuntime/7.32.2
Accept: */*
Postman-Token: ff8e552b-dc3b-4fbd-9a55-2a49888f59de
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
127.0.0.1 - - [01/May/2023 15:39:26] "GET / HTTP/1.1" 200
PostmanによるPOSTリクエスト
今度は「Body」に適当な値を設定し、POSTを送信してみます。
POST受信時のpythonのコマンド画面です。
requestline = POST / HTTP/1.1
headers = Content-Type: text/plain
User-Agent: PostmanRuntime/7.32.2
Accept: */*
Postman-Token: a5f14f3e-1e01-453f-b5b0-dff69d434978
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 4
body = test
127.0.0.1 - - [01/May/2023 15:52:35] "POST / HTTP/1.1" 200 -
最後に
wiresharkも使わず、こんなに簡単にサーバーの動作確認ができるとは、感動しました。
そのうちhttpsなんかも動作確認してみようかと思います。