zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    288 Node.js模块化开发:js开发弊端,模块的概念,模块成员导出的2种方式及其区别,模块成员导入
    287 Node.js快速入门:Node.js 的组成,Node.js基础语法,Node.js全局对象global
    286 Node开发概述,Node运行环境搭建以及安装失败解决办法
    285 H5 Web Workers
    使用nvm安装nodejs
    函数式 UI:Web开发终于摆脱了框架的束缚
    Vue渲染函数
    微信小程序使用canvas实现生成海报图的功能
    Vue中插槽指令
    Vue之nextTick原理
  • 原文地址:https://www.cnblogs.com/timssd/p/5400381.html
Copyright © 2011-2022 走看看