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_optionsauto_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 副本。

广告