利用http.server创建的web server由两部分组成:HTTPServer
class和request handler class
HTTPServer
class负责listen和接收请求,对于每个web service是相同的,直接使用http.server模块中内置的就好;request handler class负责处理具体的请求,对于每个web server是不同的,需要自己定义
利用http.server创建的web server的步骤通常是
- 定义subclass of
http.server.BaseHTTPRequestHandler
. 即handler class. - handler class中为每个HTTP verb(GET, POST等) 建立相应的method,method名采用形如
do_GET
的形式 - 创建
http.server.HTTPServer
的instance, 自己定义的handler class and server information — particularly, the port number. - 调用
HTTPServer
instance的serve_forever
method.
那么HTTPServer
是如何将接受到的请求交给request handler class中对应的method处理的呢?
本文主要介绍这个以及一些其他细节