Skip to content

Instantly share code, notes, and snippets.

@pete911
Created March 22, 2012 17:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pete911/2160680 to your computer and use it in GitHub Desktop.
Save pete911/2160680 to your computer and use it in GitHub Desktop.
basic python http server
import BaseHTTPServer
class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
mappings = {'/' : {'GET' : 'test'}}
def main_handler(self, method='GET'):
# get request url (without url params) and remove trailing /
request_url = self.path.split('?')[0].rstrip('/')
try:
method_name = self.mappings[request_url]['GET']
except KeyError, e:
# no mapping found for the request
self.send_response(404)
self.end_headers()
return
try:
method = getattr(self, method_name)
# set headers
self.send_response(200)
self.send_header('Content-type', 'application/xml')
self.end_headers()
# write response from called method
self.wfile.write(method())
except AttributeError, e:
# method not found
self.send_response(501)
self.end_headers()
return
def do_GET(self):
self.main_handler('GET')
return
def do_POST(self):
self.main_handler('POST')
return
def test(self):
return 'hello'
def run(context_path='', port=8000):
server = BaseHTTPServer.HTTPServer((context_path, port), Handler)
server.serve_forever()
if __name__ == '__main__':
run()
@fbukevin
Copy link

fbukevin commented Aug 27, 2018

Please note that in Python3 BaseHTTPServer 3 has been renamed to http.server.
A short update for Python3 could be:

import http.server as BaseHTTPServer

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
...

   BaseHTTPServer.HTTPServer((context_path, port), Handler)

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