把响应拆开看
(每道题开头都有同一段:上面那个应用的全部源码——render 把标题和正文塞进页面骨架 PAGE,list_html / form_html 生成列表和表单,STATIC 是静态文件表,handle 是入口。判题机不联网,题里直接调 ha
最小服务要有什么
真机上的壳(标准库 http.server): from http.server import BaseHTTPRequestHandler, HTTPServer class H(BaseHTTPRequestHandler):
为什么把 handle 拆出来
真机上的壳(标准库 http.server): from http.server import BaseHTTPRequestHandler, HTTPServer class H(BaseHTTPRequestHandler):
127.0.0.1 和 0.0.0.0
把服务绑在 127.0.0.1:8000,和绑在 0.0.0.0:8000,区别是【0】。
起不来的常见原因
HTTPServer(("127.0.0.1", 8000), H) 这一行抛 OSError: [Errno 98] Address already in use。意思是【0】。
壳把请求翻译成什么
(每道题开头都有同一段:上面那个应用的全部源码——render 把标题和正文塞进页面骨架 PAGE,list_html / form_html 生成列表和表单,STATIC 是静态文件表,handle 是入口。判题机不联网,题里直接调 ha
补全:do_GET
(每道题开头都有同一段:上面那个应用的全部源码——render 把标题和正文塞进页面骨架 PAGE,list_html / form_html 生成列表和表单,STATIC 是静态文件表,handle 是入口。判题机不联网,题里直接调 ha
补全:最小应答
不用 spine 的应用,从零写一个最小的 hello(method, path):GET / 交回 (200, "text/plain", "你好");别的路径 404 "没有"
补全:算 Content-Length
正文是中文时,Content-Length 是字节数不是字符数。补全 length_of(text):UTF-8 编码后的字节数。
路由是什么
贯穿全条的应用(留言板): handle(method, url, body, notes) → (状态码, 头, 正文) / GET 200 首页:留言列表 + 发表表单 /about GE