一、路由参数与请求方法
Flask 路由允许定义多种参数类型,并通过 methods
属性限制请求方法。
1. 路由参数类型:
除了默认的 string
,Flask 还支持:
-
int
: 匹配整数,自动转换为 Pythonint
类型。非数字输入会返回 404。 -
float
: 匹配浮点数,自动转换为 Pythonfloat
类型。 -
path
: 匹配包含斜杠/
的路径(斜杠不被视为参数分隔符),但会将其转换为字符串。-
区别于默认
string
:string
类型会把/
视为路径分隔符,导致参数截断。
-
-
uuid
: 匹配符合 UUID 格式的字符串,并自动转换为UUID
对象。严格校验格式。 -
any
: 限制参数值只能是预定义元组中的一个(如any(c,d,e)
),类似于枚举。-
总结: Flask 的路由参数类型支持精准匹配和自动类型转换,优于 Django 默认将所有 URL 参数视为字符串。
-
2. 请求方法(HTTP动词):
-
默认情况下,Flask 路由支持 GET 和 HEAD 请求。
-
限制方法: 使用
methods
属性(列表)来指定允许的 HTTP 方法,例如methods=['GET', 'POST']
。 -
HTTP 状态码: 不允许的方法请求会返回 405 Method Not Allowed 错误。
-
常见 HTTP 方法及其语义:
-
GET: 获取资源(检索)。
-
POST: 提交/创建资源(提交数据,如表单提交)。
-
PUT: 创建或更新资源(整体替换)。
-
DELETE: 删除资源。
-
HEAD: 获取资源的元数据(如响应头),不返回响应体。
-
-
RESTful API 实践: 通过不同 HTTP 方法操作同一资源路径,实现高内聚,例如
/user
路径,GET 获取用户,PO