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对的dict。
-
content_type – 内容类型头的值,如果缺少该头,则为 None。
-
stream – 类似于文件的输入对象,用于读取请求的主体,如果有的话。这个对象提供了对服务器数据流的直接访问,是不可搜索的。
-
bounded_stream – 围绕stream的类文件包装器
-
headers – 来自请求的原始HTTP头信息
-
params – 请求查询参数名称到其值的映射。
-
get_cookie_values(name) – 返回Cookie头中为命名的cookie提供的所有值。cookie属性的别名。
-
get_media() – 返回请求流的反序列化形式。类似于媒体属性。
-
get_param(name) – 以字符串形式返回一个查询字符串参数的原始值。如果一个具有 application/x-wwwform-urlencoded 媒体类型的HTML表单被POST,Falcon可以自动解析请求体中的参数并将其合并到查询字符串参数中。要启用此功能,请通过 App.req_options 将 auto_parse_form_urlencoded 设置为True。
响应
响应对象代表服务器对客户端的HTTP响应。和Request对象一样,Response对象也不是为了被响应者直接实例化。
响应者、钩子函数或中间件方法通过访问以下属性和方法来操作这个对象:
-
status – HTTP状态代码,例如,’200 OK’。这可以设置为 http.HTTPStatus 的成员,HTTP状态行字符串或字节字符串,或一个int。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, and falcon.MEDIA_GIF。
-
append_header (name, value) – 为这个响应设置或附加一个头。用于设置cookies。
-
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副本过期。