[Python]簡易Webサーバーの作成
公開日:2025-12-19
更新日:2025-12-19
更新日:2025-12-19
1. 概要
簡易Webサーバーを作成します。
2. コード
コード
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse, parse_qs
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
# URLの解析
parsed_url = urlparse(self.path)
# クエリー文字列の解析
query_params = parse_qs(parsed_url.query) # query_params[キー][0] = 値
# クエリー文字列で msg が未設定の場合は、エラーのレスポンスを返す
msgs = query_params.get('msg')
if msgs is None:
# ヘッダーの出力
self.send_response(500)
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()
html = 'Error'
self.wfile.write(html.encode('utf-8'))
return
# ヘッダーの出力
self.send_response(200)
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()
# レスポンスの出力。クエリー文字列の msg をそのまま返す
html = msgs[0]
self.wfile.write(html.encode('utf-8'))
# Httpサーバーの起動
if __name__ == '__main__':
server = HTTPServer(('', 8000), RequestHandler)
print('サーバーを起動しました。http://localhost:8000')
try:
server.serve_forever() # 無限ループでリクエストを処理します
except KeyboardInterrupt:
# Ctrl+C が押されて発生した KeyboardInterrupt を処理します
print('サーバーを停止しました。')
server.shutdown()
実行後、ブラウザで http://localhost:8000/?msg=test にアクセスすると、test と表示されます。
http://localhost:8000/ にアクセスすると、Error と表示されます。

