Skip to content

Instantly share code, notes, and snippets.

@bdon
Last active March 16, 2018 15:20
Show Gist options
  • Save bdon/e7bfabb645b5e6db927dbc6bd820c0af to your computer and use it in GitHub Desktop.
Save bdon/e7bfabb645b5e6db927dbc6bd820c0af to your computer and use it in GitHub Desktop.
python2.7 httpserver example
#!/usr/bin/python2.7
import unittest
import httplib
import BaseHTTPServer
# run these tests with: python -m unittest database_server
class TestDatabaseServer(unittest.TestCase):
def test_get(self):
h = httplib.HTTPConnection('localhost:4000')
h.request("GET","/set?somekey=somevalue")
r1 = h.getresponse()
h.request("GET","/get?key=somekey")
r1 = h.getresponse()
self.assertEqual(r1.read(),"somevalue")
db = {}
class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
cmd, pair = self.path.split('?')
pair0, pair1 = pair.split("=")
self.send_response(200)
self.send_header('Content-Type','text/plain')
self.end_headers()
if cmd == "/set":
db[pair0] = pair1
self.wfile.write("OK")
elif cmd == "/get":
content = db[pair1]
self.wfile.write(content)
else:
raise Exception("unknown cmd")
class DatabaseServer():
def run(self):
httpd = BaseHTTPServer.HTTPServer(('',4000), RequestHandler)
httpd.serve_forever()
if __name__ == '__main__':
DatabaseServer().run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment