前端的开发的html给我们的时候,由于内部有一些ajax请求的.json的数据,需要在一个web server中查看,每次放到http服务器太麻烦。还是直接用python造一个最方便。
最简单的,直接用python3 -m http.server
但是我在测试的时候发现在收到json数据的时候,由于content-type不对,部分内容显示不出来,于是写出来新版本.
这个版本加了几种常见的mimetype的支持。
在Mac下使用python3 myhttpserver.py
启动。
#!/usr/bin/env python #--coding:utf-8-- from http.server import BaseHTTPRequestHandler, HTTPServer from os import path from urllib.parse import urlparse curdir = path.dirname(path.realpath(__file__)) sep = '/' # MIME-TYPE mimedic = [ ('.html', 'text/html'), ('.htm', 'text/html'), ('.js', 'application/javascript'), ('.css', 'text/css'), ('.json', 'application/json'), ('.png', 'image/png'), ('.jpg', 'image/jpeg'), ('.gif', 'image/gif'), ('.txt', 'text/plain'), ('.avi', 'video/x-msvideo'), ] class testHTTPServer_RequestHandler(BaseHTTPRequestHandler): # GET def do_GET(self): sendReply = False querypath = urlparse(self.path) filepath, query = querypath.path, querypath.query if filepath.endswith('/'): filepath += 'index.html' filename, fileext = path.splitext(filepath) for e in mimedic: if e[0] == fileext: mimetype = e[1] sendReply = True if sendReply == True: try: with open(path.realpath(curdir + sep + filepath),'rb') as f: content = f.read() self.send_response(200) self.send_header('Content-type',mimetype) self.end_headers() self.wfile.write(content) except IOError: self.send_error(404,'File Not Found: %s' % self.path) def run(): port = 8000 print('starting server, port', port) # Server settings server_address = ('', port) httpd = HTTPServer(server_address, testHTTPServer_RequestHandler) print('running server...') httpd.serve_forever() if __name__ == '__main__': run()
来源:https://www.cnblogs.com/asis/p/6842996.html