LoginSignup
2
2

More than 5 years have passed since last update.

HTTPリクエストヘッダをレスポンスのbodyに埋めて返すだけの簡易モックサーバ

Last updated at Posted at 2017-07-07

nginxのproxy_passの稼働確認でHTTPリクエストヘッダをレスポンスに埋めて返すだけのちょっとしたモックサーバが欲しくなりました。

簡易HTTPサーバといえば、ただの静的なファイル配信だけならpythonのワンライナーで十分なんだけど、

$ sudo python -m SimpleHTTPServer 80

今回はちょっとHTTPリクエストヘッダをレスポンスのbodyに埋めて返したかったので、簡単なpythonスクリプトを書いてみた。
ちなみになんでpythonなのかというと、多くのLinuxディストリビューションにデフォルトで入ってて標準ライブラリだけで追加の依存モジュールなしでできるという理由からpythonで実装してます。ちなみにpythonは2.7系です。

$ python --version
Python 2.7.12

こんなかんじのスクリプトを mock_server.py という名前で作る。

mock_server.py
#!/usr/bin/env python

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

class RequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "text/plain")
        self.end_headers()
        self.wfile.write('%s %s %s\n' % (self.command, self.path, self.request_version))
        self.wfile.write(self.headers)
        self.finish()
        self.connection.close()

port = 80
server = HTTPServer(('', port), RequestHandler)
server.serve_forever()

80番ポートをリッスンする都合でsudo経由で実行する。

$ sudo python mock_server.py

curlしてみる。

$ curl -H "Host: hoge.example.com" -H "X-MOCK-PROXY-PASS: hoge.example.com" http://127.0.0.1/hoge
GET /hoge HTTP/1.1
Host: hoge.example.com
User-Agent: curl/7.47.1
Accept: */*
X-MOCK-PROXY-PASS: hoge.example.com

これでテストしたいnginxを間に挟んで、curl => nginx => mockサーバみたいな構成にすれば、期待したHTTPヘッダが渡ってきてるか見れるし、適当なヘッダをデバッグ用に埋めたりしたらどのlocationでproxy_passされてるかとか簡単にテストできそうな気がする。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2