本日の記事では、Python HttpServerの使用について見ていきます。
このモジュールは、ネットワーク上でローカルのHttpサーバーを起動するための非常に迅速かつ簡単な方法として機能します。
以前、Python 2.7では、このモジュールは HttpServer
と呼ばれていました。
しかし、Python3では、このモジュールは http.server
モジュールにマージされました。
さっそく、自分自身のHttpサーバーを動かしてみましょう!
Python httpserver モジュールのインポート
このモジュールは標準ライブラリの一部として提供されています。
このモジュールをインポートするには、以下のように記述してください。
import http.server
|
これで、サーバーを動かすための準備が整いました。
それでは、ファイルを提供するためのコードを書いてみましょう。
Httpサーバーの実行
単にファイルやディレクトリを他のユーザと共有したい場合は、Pythonを使用して直接サーバを実行することができます。
共有したいディレクトリに移動し、そこからPythonを使用してサーバーを実行します。
python -m http.server 9000 |
ここでは、ポート9000でローカルのHttpサーバーを起動します。
Httpサーバーに接続する
さて、ローカルサーバに接続するためには、以下の手順が必要です。
-
- サーバマシンに行き、Windowsでは
arp -a
を、Linuxではip -a | grep inet
を使ってサーバのIPアドレスを確認します。
- サーバマシンに行き、Windowsでは
-
- リモートクライアントから、ブラウザで
http://IP_ADDRESS:9000/
と入力し、魔法を見ます!
- リモートクライアントから、ブラウザで
結果は以下の通りです。
# server.py import http.server # Our http server handler for http requests
import socketserver # Establish the TCP Socket connections
PORT = 9000
class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):
def do_GET( self ):
self .path = 'index.html'
return http.server.SimpleHTTPRequestHandler.do_GET( self )
Handler = MyHttpRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd: print ( "Http Server Serving at port" , PORT)
httpd.serve_forever()
|
サーバーのファイルを見ることもできますし、クライアントマシンにダウンロードすることもできます!
出力
python server.py |
カスタムな index.html ファイルを提供する Python HttpServer を実行する
デフォルトのサーバはファイルを直接共有するのに便利ですが、別のファイルを実行することで、サーバの動作をカスタマイズすることができます。
例えば、TCP通信に http.server
と socketserver
を使用するカスタムHttpサーバを実行します。
MyHttpRequestHandlerは、do_GET()メソッドを呼び出してリクエストを処理します。
この関数をオーバーライドするには、別の値を返す別の do_GET() メソッドを定義します。
これを server.py
として呼び出すと、httpサーバーを実行することができます。
カスタムdo_GET()関数を定義したので、サーバーを使用してホームページのHTMLファイルを提供することができます(この例ではindex.html)。
また、サーバーが自分のシステム上で動作している場合は、IPの代わりにlocalhost:<ポート番号>を使用してサーバーに直接アクセスすることができます。
この記事もチェック:Pythonでopenメソッドを使用してファイルを開く方法
まとめ
この記事では、Pythonの http.server
モジュールを使って簡単なHttpサーバーをセットアップする方法を学びました。
また、サーバーにリクエストしたときにカスタムファイルを提供するために、do_GET()メソッドを定義する方法を学びました。