My favorites | 中文(简体) | Sign in

Response 类

Response 类的实例表示在对网络请求的响应中要发送的数据。

Responsegoogle.appengine.ext.webapp 模块提供。

简介

webapp 框架调用请求处理程序方法时,会使用一个空 Response 实例初始化该处理程序实例的 response 成员。该处理程序方法通过处理 Response 实例(例如将正文数据写入 out 成员或在 headers 成员上设置标头)准备响应。

import datetime

class MyRequestHandler(webapp.RequestHandler):
  def get(self):
    self.response.out.write("<html><body>")
    self.response.out.write("<p>Welcome to the Internet!</p>")
    self.response.out.write("</body></html>")

    expires_date = datetime.datetime.utcnow() + datetime.timedelta(365)
    expires_str = expires_date.strftime("%d %b %Y %H:%M:%S GMT")
    self.response.headers.add_header("Expires", expires_str)

当处理程序方法返回时,webapp 会发送该响应。当该方法返回时,该响应的内容为 Response 对象的最终状态。

注意:用处理程序方法处理对象时不会将任何数据传递给用户。特别要说明的是,这表示 webapp 无法像在流应用程序中那样向浏览器发送数据然后执行其他逻辑操作。(无论是否使用 webapp,App Engine 应用程序都无法向浏览器传送数据。)

默认情况下,响应会使用 HTTP 状态代码 200([正常])。应用程序可使用 set_status() 方法更改该状态代码。有关设置错误代码的便捷方法,您也可参阅 RequestHandler 对象的 error() 方法

如果响应未在 Content-Type 标头中指定字符集,则该响应的字符集会自动设置为 UTF-8。

构造函数

Response 类的构造函数的定义如下:

class Response()

输出的响应。通常,WSGIApplication 会实例化 RequestHandler,并使用带有默认值的 Response 对象将其初始化。

类方法

Response 类会提供以下类方法:

Response.http_status_message(code)

返回指定 HTTP 状态代码的默认 HTTP 状态消息。

参数:

code
HTTP 状态代码。

实例变量

Response 类的实例具有以下变量成员:

out

包含响应的正文文本的 StringIO 类的实例。返回请求处理程序方法时,该对象的内容会作为响应的正文发送。

headers

包含响应标头的 wsgiref.headers.Headers 类的实例。返回请求处理程序方法时,该对象的内容会作为响应的标头发送。

出于安全性考虑,应用程序不能修改某些响应标头。请参阅禁止使用的 HTTP 响应标头

实例方法

Response 类的实例具有以下方法:

set_status(code, message=None)

为响应设置 HTTP 状态代码。

参数:

code
要用于响应的 HTTP 状态代码。
message
要与 HTTP 状态代码配合使用的消息。如果是 None,则使用如 Response.http_status_message() 返回的默认消息。
clear()

清除写入输出流 (out) 的所有数据。

wsgi_write(start_response)

使用 WSGI 语义编写响应。通常,应用程序不直接调用此函数。当请求处理程序方法返回时,webapp 会调用此函数以编写响应。

参数:

start_response
WSGI 兼容的 start_response 函数。

禁止使用的 HTTP 响应标头

出于安全性考虑,应用程序不能修改以下 HTTP 响应标头。在 Response 对象的 headers 对象中设置这些响应标头会无效。

  • Content-Encoding
  • Content-Length
  • Date
  • Server
  • Transfer-Encoding