BaseHTTPRequestHandler介绍
这是一个以TCPServer为基础开发的模块,可以在请求外层添加http协议报文,发送http协议。
基于BaseHTTPServer 的Http Server的处理流程:
1.HTTPServer绑定对应的应答类(BaseHTTPRequestHandler )
http_server = HTTPServer((’’, int(port)), ServerHTTP)
2.监听端口:
http_server.serve_forever()
serve_forever()方法使用select.select()循环监听请求,当接收到请求后调用
当监听到请求时,取出请求对象
3.应答:
创建新线程以连接对象(开始理解成请求对象)为参数实例化应答类:ServerHTTP()
应答类根据请求方式调用ServerHTTP.do_XXX处理方法
常用方法/属性:
BaseHTTPRequestHandler.path #包含的请求路径和GET请求的数据
BaseHTTPRequestHandler.command #请求类型GET、POST…
BaseHTTPRequestHandler.request_version #请求的协议类型HTTP/1.0、HTTP/1.1
BaseHTTPRequestHandler.headers #请求的头
BaseHTTPRequestHandler.responses #HTTP错误代码及对应错误信息的字典
BaseHTTPRequestHandler.handle() #用于处理某一连接对象的请求,调用handle_one_request方法处理
BaseHTTPRequestHandler.handle_one_request() #根据请求类型调用do_XXX()方法,XXX为请求类型
BaseHTTPRequestHandler.do_XXX() #处理请求
BaseHTTPRequestHandler.send_error() #发送并记录一个完整的错误回复到客户端,内部调用send_response()方法实现
BaseHTTPRequestHandler.send_response() #发送一个响应头并记录已接收的请求
BaseHTTPRequestHandler.send_header() #发送一个指定的HTTP头到输出流。 keyword 应该指定头关键字,value 指定它的值
BaseHTTPRequestHandler.end_headers() #发送一个空白行,标识发送HTTP头部结束
BaseHTTPRequestHandler.wfile #self.connection.makefile(‘rb’, self.wbufsize) self.wbufsize = -1 应答的HTTP文本流对象,可写入应答信息
BaseHTTPRequestHandler.rfile #self.connection.makefile(‘wb’, self.rbufsize) self.rbufsize = 0 请求的HTTP文本流对象,可读取请求信息
# coding:utf-8 try: #python2 from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler except: #python3 from http.server import BaseHTTPRequestHandler, HTTPServer class CustomHandler(BaseHTTPRequestHandler): def do_GET(self): path = self.path self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() # 根据路径返回不同的内容 if self.path == '/': self.wfile.write(b'Hello, welcome to our custom server!') elif self.path == '/hello': self.wfile.write(b'Hello world!') else: self.wfile.write(b'Not Found') def start_server(port): http_server = HTTPServer(('', int(port)), CustomHandler) http_server.serve_forever() if __name__ == "__main__": start_server(8000)
标签:web,HTTP,请求,python,self,server,简单,BaseHTTPRequestHandler,http From: https://www.cnblogs.com/boye169/p/18135603