Postmanでローカルサーバーの動作確認

postman,postman,python,通信

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/」に対し、GETPOSTの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なんかも動作確認してみようかと思います。