Python Falcon - 请求和响应


HTTP 协议规定,客户端向服务器发送 HTTP 请求,服务器应用特定的业务逻辑并制定响应,该响应被重定向到客户端。两者之间同步传输时,Python框架使用WSGI标准,而异步传输则遵循ASGI标准。Falcon支持两者。

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

要求

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

  • method - 请求的 HTTP 方法(例如“GET”、“POST”等)

  • host - 主机请求标头字段

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

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

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

  • query_string - 请求 URI 的查询字符串部分,前面不带“?” 特点。

  • cookies - 名称/值 cookie 对的字典。

  • content_type - Content-Type 标头的值,如果标头丢失则为 None 。

  • Stream - 用于读取请求正文的类似文件的输入对象(如果有)。该对象提供对服务器数据流的直接访问并且是不可查找的。

  • bounded_stream - 流周围的类似文件的包装器

  • headers - 请求中的原始 HTTP 标头

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

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

  • get_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 状态行字符串或字节字符串或 int。Falcon 为常见状态代码提供了许多常量,以 HTTP_ 前缀开头,如 - falcon.HTTP_204

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

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

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

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

  • - 表示响应内容的类似文件的对象。

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

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