Skip to content

Instantly share code, notes, and snippets.

@jumping
Forked from bradmontgomery/dummy-web-server.py
Last active January 29, 2019 03:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jumping/652bc80b36932478419b1fe76bf1d3ac to your computer and use it in GitHub Desktop.
Save jumping/652bc80b36932478419b1fe76bf1d3ac to your computer and use it in GitHub Desktop.
a minimal http server in python. Responds to GET, HEAD, POST requests, but will fail on anything else.
#!/usr/bin/env python
"""
Very simple HTTP server in python.
Usage::
./dummy-web-server.py [<port>]
Send a GET request::
curl http://localhost
Send a HEAD request::
curl -I http://localhost
Send a POST request::
curl -d "foo=bar&bin=baz" http://localhost
"""
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import SocketServer
import logging
logging.basicConfig(level=logging.DEBUG)
class S(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write("<html><body><h1>hi!</h1></body></html>")
def do_HEAD(self):
self._set_headers()
def do_POST(self):
# Doesn't do anything with posted data
self._set_headers()
self.wfile.write("<html><body><h1>POST!</h1></body></html>")
content_len = int(self.headers.getheader('content-length', 0))
data = self.rfile.read(content_len)
logging.debug(data)
def run(server_class=HTTPServer, handler_class=S, port=80):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
logging.info('Starting httpd...')
httpd.serve_forever()
if __name__ == "__main__":
from sys import argv
if len(argv) == 2:
run(port=int(argv[1]))
else:
run()
@jumping
Copy link
Author

jumping commented Jan 29, 2019

use logging to record information

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment