/projects 与 /projects/ 到底是不是同一个 URL?访问另一种形式会怎样?POST 会不会丢?这篇用两个规则和 308 重定向把规则讲清楚。
请求 状态 Location / 正文 GET /projects/ 200 projects 列表 GET /projects 308 http://localhost/projects/ GET /about 200 about 页面 GET /about/ 404 <html lang=en> GET /loose 200 loose GET /loose/ 200 loose GET /loose2 200 loose2 GET /loose2/ 200 loose2
上一篇:自定义 URL Converter;下一篇:url_for() 如何反向生成 URL。
POST /submit(规则是 /submit/)→ 308 | Location = http://localhost/submit/ follow_redirects=True → 200 submitted | 重定向历史: [(308, 'POST')]
GET http://example.test:8080/projects → Location = http://example.test:8080/projects/ | autocorrect_location_header = False
url_for 的结果: {'projects': '/projects/', 'about': '/about', 'loose': '/loose'} strict_slashes = False: {'/projects': 200, '/projects/': 200, '/about': 200, '/about/': 200}
同时注册 /x 与 /x/: {'/x': (200, 'no-slash'), '/x/': (200, 'with-slash')}直接访问 /projects/:75.5 µs;访问 /projects(重定向后再请求):209.0 µs(约 2.8 倍,因为多发了一个请求)