Python HTTP Server http server Module Base HTTPRequest
Python HTTP Server
http. server Module • Base. HTTPRequest. Handler • How to handle incoming HTTP requests (GET, HEAD, POST , . . ) • HTTPServer • Create an HTTP Server from http. server import Base. HTTPRequest. Handler, HTTPServer HOST_NAME = 'localhost' PORT_NUMBER = 9000
Base. HTTPRequest. Handler • Define your own class and inherit from Base. HTTPRequest. Handler • Override do_HEAD, do_GET, do_POST, do_*, … methods. • Return appropriate responses for each request. class My. Handler(Base. HTTPRequest. Handler): def do_HEAD(self): … def do_GET(self): …
Base. HTTPRequest. Handler class My. Handler(Base. HTTPRequest. Handler): def do_HEAD(self): self. send_response(200) self. send_header('Content-type', 'text/html') self. end_headers() def do_GET(self): self. send_response(200) self. send_header('Content-type', 'text/html') self. end_headers() if self. path == "/": f = open("index. html", "r") self. wfile. write(bytes(f. read(), 'UTF-8')) else: self. wfile. write(bytes("Page Not Found", 'UTF-8'))
Base. HTTPRequest. Handler class My. Handler(Base. HTTPRequest. Handler): def do_POST(self): request_headers = self. headers content_length = request_headers. get('content-length') length = int(content_length) if content_length else 0 print(request_headers) print(self. rfile. read(length)) self. send_response(200) self. send_header('Content-type', 'text/html') self. end_headers() f = open("index. html", "r") self. wfile. write(bytes(f. read(), 'UTF-8'))
Create Server import time myserver = HTTPServer((HOST_NAME, PORT_NUMBER), My. Handler) print(time. asctime(), "Server Start " +HOST_NAME+" : "+ str(PORT_NUMBER)) try: myserver. serve_forever() except Keyboard. Interrupt: pass myserver_close() print(time. asctime(), "Server Stoped " + HOST_NAME+" : "+ str(PORT_NUMBER))
Read GET Parameters from urllib. parse import urlparse query = urlparse(self. path). query
- Slides: 7