python 基于BaseHTTPServer的web服务器搭建(二)

本文介绍如何使用Python快速搭建一个简易的HTTP服务器,并演示了如何处理GET请求及返回静态文件如HTML页面、图片等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#coding=utf-8

from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler
import urllib

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()  #发送\r\n,意味这下一行为报体
        #send html message,
        self.wfile.write('hello,nanxiaoting')
        return



if __name__ == '__main__':  #注意main后面没有括号
    try:
        server = HTTPServer(('',8080),MyHandler)
        server.serve_forever()
    except KeyboardInterrupt:
        print '^c received,shutting down the web server!'
        server.socket.close()

在浏览器输入 http://127.0.0.1:8080

就会出现 hello,nanxiaoting

2.读取静态文件,像index.html, style.css, javascript和images:

首先贴出index.html :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My web</title>
</head>
<body>
     <h1>hi</h1>
     <p1>hello world</p1>
     <img src="./a.jpg">

</body>
</html>

其中,a.jpg为当前目录下的图片

#coding=utf-8

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8080
cur_dir = './'

#This class will handles any incoming request from
#the browser
class myHandler(BaseHTTPRequestHandler):

    #Handler for the GET requests
    def do_GET(self):
        if self.path=="/":
            self.path="/index.html"

        try:
            #Check the file extension required and
            #set the right mime type

            sendReply = False
            if self.path.endswith(".html"):
                mimetype='text/html'
                sendReply = True
            if self.path.endswith(".jpg"):
                mimetype='image/jpg'
                sendReply = True
            if self.path.endswith(".gif"):
                mimetype='image/gif'
                sendReply = True
            if self.path.endswith(".js"):
                mimetype='application/javascript'
                sendReply = True
            if self.path.endswith(".css"):
                mimetype='text/css'
                sendReply = True

            if sendReply == True:
                #Open the static file requested and send it
                f = open(cur_dir + self.path)
                self.send_response(200)
                self.send_header('Content-type',mimetype)
                self.end_headers()
                self.wfile.write(f.read())
                f.close()
            return


        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)

try:
    #Create a web server and define the handler to manage the
    #incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print 'Started httpserver on port ', PORT_NUMBER

    #Wait forever for incoming http requests
    server.serve_forever()

except KeyboardInterrupt:
    print '^C received, shutting down the web server'
    server.socket.close()

在浏览器输入,http://127.0.0.1:8080   。出现:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值