Python3实现简单的http server

 

前端的开发的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'),
('.zip', 'application/zip'), ] 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 = 8080 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/timssd/p/5400381.html