第 1 课
URL 组成部分
把 URL 拆成协议、主机、端口、路径、查询与片段。
URL 是结构化地址,不只是普通字符串。调试前先拆分组成部分,问题会清楚很多。
https://api.example.com:8443/v1/items?q=blue&page=2#results
这个 URL 包含:
- 协议:
https - 主机:
api.example.com - 端口:
8443 - 路径:
/v1/items - 查询:
q=blue&page=2 - 片段:
results
协议
协议告诉客户端如何解释 URL 的其余部分。https、http、mailto 和 file 都有不同规则。
主机与端口
主机标识服务器,端口标识网络端口。HTTPS 的默认端口 443 通常不会显示,但显式端口在本地开发和服务调试中很重要。
路径
路径标识主机中的资源。它是层级结构,所以 /users/42 和 /users/42/ 是否相同取决于服务器。
查询
查询从 ? 后开始,常用于过滤、分页、排序、追踪字段和 OAuth state。查询解析并不总是统一规则,因为重复键和空值在不同框架中可能含义不同。
片段
片段从 # 后开始。浏览器通常在客户端使用它,不会在 HTTP 请求中发送给服务器。调试“服务器为什么看不到这段链接”时,这一点非常关键。
把每个组成部分都视为边界。大多数 URL bug 都来自在错误边界上编码或重建。