Reading JSON from SimpleHTTPServer Post data

前端 未结 2 1125
执笔经年
执笔经年 2020-12-01 03:34

I am trying to build a simple REST server with python SimpleHTTPServer. I am having problem reading data from the post message. Please let me know if I am doing it right.

2条回答
  •  南笙
    南笙 (楼主)
    2020-12-01 04:21

    Thanks matthewatabet for the klein idea. I figured a way to implement it using BaseHTTPHandler. The code below.

    from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
    import SocketServer
    import simplejson
    import random
    
    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()
            f = open("index.html", "r")
            self.wfile.write(f.read())
    
        def do_HEAD(self):
            self._set_headers()
    
        def do_POST(self):
            self._set_headers()
            print "in post method"
            self.data_string = self.rfile.read(int(self.headers['Content-Length']))
    
            self.send_response(200)
            self.end_headers()
    
            data = simplejson.loads(self.data_string)
            with open("test123456.json", "w") as outfile:
                simplejson.dump(data, outfile)
            print "{}".format(data)
            f = open("for_presen.py")
            self.wfile.write(f.read())
            return
    
    
    def run(server_class=HTTPServer, handler_class=S, port=80):
        server_address = ('', port)
        httpd = server_class(server_address, handler_class)
        print 'Starting httpd...'
        httpd.serve_forever()
    
    if __name__ == "__main__":
        from sys import argv
    
    if len(argv) == 2:
        run(port=int(argv[1]))
    else:
        run()
    

    And the corresponding html page

     
     

提交回复
热议问题