Python Falcon - Request & Response

HTTP 协议声明客户端向服务器发送 HTTP 请求,服务器应用特定的业务逻辑并制定响应,然后重定向到客户端。 在两者同步传输的情况下,Python框架使用WSGI标准,而异步传输则遵循ASGI标准。 Falcon 两者都支持。

WSGI/ASGI 服务器在上下文数据中提供请求和响应对象。 这些对象被响应者、hooks、中间件等用作参数。 对于 WSGI 应用程序,处理 falcon.Request 类的实例。 在 ASGI 应用程序中,它代表 falcon.asgi.Request 类。 尽管不同,但这两个类都被设计为具有相似的属性和方法,以尽量减少混淆并允许更容易的可移植性。


Request

Request 对象表示 HTTP 请求。 由于它是由服务器提供的,因此该对象并不意味着由响应程序方法直接实例化。 该对象提供以下属性和方法以在响应程序、挂钩和中间件方法中使用 −

  • method − 请求的 HTTP 方法(例如"GET"、"POST"等)

  • host − 主机请求头部字段

  • port − 用于请求的端口。 返回给定模式的默认值(HTTP 为 80,HTTPS 为 443)

  • uri − 请求的完全限定 URI。

  • path − 请求 URI 的路径部分(不包括查询字符串)。

  • query_string − 请求 URI 的查询字符串部分,前面没有 '?' 字符。

  • cookies − name/value cookie 对的字典。

  • content_type − Content-Type 标头的值,如果缺少标头,则为 None。

  • stream − 用于读取请求正文的类文件输入对象(如果有)。 此对象提供对服务器数据流的直接访问,并且是不可搜索的。

  • bounded_stream − file-like wrapper around stream

  • headers − 来自请求的原始 HTTP 标头

  • params − 请求查询参数名称与其值的映射。

  • get_cookie_values(name) − 返回指定 cookie 的 Cookie 标头中提供的所有值。 cookie 属性的别名。

  • get_media() − 返回请求流的反序列化形式。 类似于媒体属性。

  • get_param(name) − 将查询字符串参数的原始值作为字符串返回。 如果一个带有application/x-wwwform-urlencoded 媒体类型的 HTML 表单被 POSTed,Falcon 可以自动解析请求体中的参数并将它们合并到查询字符串参数中。 要启用此功能,请通过 App.req_optionsauto_parse_form_urlencoded 设置为 True。


Response

Response 对象表示服务器对客户端的 HTTP 响应。 与 Request 对象一样,Response 对象也不应由响应者直接实例化。

响应者、钩子函数或中间件方法通过访问以下属性和方法来操作此对象 −

  • status − HTTP 状态代码,例如"200 OK"。 这可以设置为 http.HTTPStatus 的成员、HTTP 状态行字符串或字节字符串,或 int。 Falcon 为常见的状态代码提供了许多常量,以 HTTP_ 前缀开头,如 − falcon.HTTP_204

  • media − 通过 falcon.RequestOptions 配置的媒体处理程序支持的可序列化对象。

  • text − 表示响应内容的字符串。

  • body − 已弃用的文本别名。

  • data − 表示响应内容的字节字符串。

  • stream − 表示响应内容的类文件对象。

  • content_length − 设置 Content-Length 标头。 当未设置文本或数据属性时,它会手动设置内容长度。

  • 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.

  • 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) − 设置流和 content_length。

  • unset_cookie (name, domain=None, path=None) − 在响应中取消设置 cookie。 此方法清除 cookie 的内容,并指示用户代理立即使自己的 cookie 副本过期。