- Python Falcon 教程
- Python Falcon - 首页
- Python Falcon - 简介
- Python Falcon - 环境搭建
- Python Falcon - WSGI vs ASGI
- Python Falcon - Hello World(WSGI)
- Python Falcon - Waitress
- Python Falcon - ASGI
- Python Falcon - Uvicorn
- Python Falcon - API 测试工具
- 请求与响应
- Python Falcon - 资源类
- Python Falcon - 应用类
- Python Falcon - 路由
- Falcon - 后缀响应器
- Python Falcon - Inspect 模块
- Python Falcon - Jinja2 模板
- Python Falcon - Cookies
- Python Falcon - 状态码
- Python Falcon - 错误处理
- Python Falcon - 钩子
- Python Falcon - 中间件
- Python Falcon - CORS
- Python Falcon - WebSocket
- Python Falcon - SQLAlchemy 模型
- Python Falcon - 测试
- Python Falcon - 部署
- Python Falcon 有用资源
- Python Falcon - 快速指南
- Python Falcon - 有用资源
- Python Falcon - 讨论
Python Falcon - 请求与响应
HTTP 协议规定客户端向服务器发送 HTTP 请求,服务器应用特定的业务逻辑并生成响应,然后将响应重定向到客户端。在客户端和服务器之间进行同步传输时,Python 框架使用 WSGI 标准,而异步传输则遵循 ASGI 标准。Falcon 支持两者。
WSGI/ASGI 服务器在上下文数据中提供 Request 和 Response 对象。这些对象被响应器、钩子、中间件等作为参数使用。对于 WSGI 应用,处理的是 falcon.Request 类的实例。在 ASGI 应用中,它表示 falcon.asgi.Request 类。尽管有所不同,但这两个类都旨在具有相似的属性和方法,以最大程度地减少混淆并简化可移植性。
请求
Request 对象表示 HTTP 请求。由于它由服务器提供,因此此对象不应由响应器方法直接实例化。此对象提供以下属性和方法,可在响应器、钩子和中间件方法中使用:
method - 请求的 HTTP 方法(例如,“GET”、“POST”等)
host - Host 请求头字段
port - 用于请求的端口。返回给定方案的默认端口(HTTP 为 80,HTTPS 为 443)
uri - 请求的完全限定 URI。
path - 请求 URI 的路径部分(不包括查询字符串)。
query_string - 请求 URI 的查询字符串部分,不包括前面的“?”字符。
cookies - 名/值 Cookie 对的字典。
content_type - Content-Type 标头的值,如果标头缺失则为 None。
stream - 用于读取请求主体(如果有)的文件类输入对象。此对象提供对服务器数据流的直接访问,并且不可搜索。
bounded_stream - stream 的文件类包装器
headers - 来自请求的原始 HTTP 标头
params - 请求查询参数名称与其值的映射。
get_cookie_values(name) - 返回 Cookie 标头中为指定 Cookie 提供的所有值。cookies 属性的别名。
get_media() - 返回请求流的反序列化形式。类似于 media 属性。
get_param(name) - 将查询字符串参数的原始值作为字符串返回。如果使用 application/x-wwwform-urlencoded 媒体类型发布了 HTML 表单,则 Falcon 可以自动从请求主体解析参数并将它们合并到查询字符串参数中。要启用此功能,请通过 App.req_options 将 auto_parse_form_urlencoded 设置为 True。
响应
Response 对象表示服务器对客户端的 HTTP 响应。与 Request 对象一样,Response 对象也不应由响应器直接实例化。
响应器、钩子函数或中间件方法通过访问以下属性和方法来操作此对象:
status - HTTP 状态码,例如“200 OK”。这可以设置为 http.HTTPStatus 的成员、HTTP 状态行字符串或字节字符串,或整数。Falcon 为常见状态码提供了一些常量,以 HTTP_ 为前缀,例如:falcon.HTTP_204。
media - 通过 falcon.RequestOptions 配置的媒体处理程序支持的可序列化对象。
text - 表示响应内容的字符串。
body - text 的已弃用别名。
data - 表示响应内容的字节字符串。
stream - 表示响应内容的文件类对象。
content_length - 设置 Content-Length 标头。当未设置 text 或 data 属性时,它会手动设置内容长度。
content_type - 设置 Content-Type 标头。Falcon 为常用媒体类型预定义的常量包括 falcon.MEDIA_JSON、falcon.MEDIA_MSGPACK、falcon.MEDIA_YAML、falcon.MEDIA_XML、falcon.MEDIA_HTML、falcon.MEDIA_JS、falcon.MEDIA_TEXT、falcon.MEDIA_JPEG、falcon.MEDIA_PNG 和 falcon.MEDIA_GIF。
append_header (name, value) - 设置或追加此响应的标头。用于设置 Cookie。
delete_header (name) - 删除之前为此响应设置的标头。
get_header (name) - 检索给定标头的原始字符串值。
set_cookie (name, value) - 设置响应 Cookie。此方法可以多次调用以将一个或多个 Cookie 添加到响应中。
set_header (name, value) - 将此响应的标头设置为给定值。
set_stream (stream, content_length) - 设置 stream 和 content_length。
unset_cookie (name, domain=None, path=None) - 在响应中取消设置 Cookie。此方法清除 Cookie 的内容,并指示用户代理立即过期其自己的 Cookie 副本。