(二)沿一次请求找出各层职责
1. 浏览器、服务器与数据库之间的动作
浏览器收集表单字段,向服务器地址发送 HTTP 请求。服务器接收网络字节,交给 Python 应用;应用选择处理函数、核对数据、执行数据库操作,再形成 HTTP 响应。浏览器根据响应更新页面或发起下一次请求。
一次请求中的分工可以这样读:
| 部分 | 这次保存中的具体动作 |
|---|---|
| 路由 | 根据 POST /books 选择保存表单的处理分支 |
| 输入解析 | 从请求体取出书名、状态与标签文本 |
| 校验 | 核对字段类型、空白书名和标签内容 |
| 业务处理 | 给当前账号建立书籍,判断同名冲突 |
| 数据库 | 在事务中插入记录并提交 |
| 响应 | 告诉浏览器保存结果与下一步地址 |
数据库没有直接接收浏览器按钮,也没有直接绘制页面。路由与校验把网络输入变成业务数据,响应再把结果交回客户端。
2. 从开发者工具观察方法、地址与正文
浏览器按 F12 打开开发者工具,在 Network 中保留请求记录,再保存一本书。先找到 POST 请求,查看 Request Method、Request URL、Content-Type 和请求正文,再看 Status Code 与 Location;随后还会看到一次 GET。
HTTP 方法表达动作,路径标识入口,查询串提供筛选条件。请求头描述正文格式、Cookie 等信息,请求体保存这次提交的数据。响应也有状态、头字段和正文;第八章读取过这些内容,现在从服务器一侧把它们生成出来。