RequestHandler是tornado处理http请求的基类。对于一个http请求,使用此类获取请求的内容,并定制其响应内容。下面总结一下该类所包含的方法或变量。
1、 self.request对象包含请求中的所有信息
使用dir(self.request)打印出来的内容有:[‘__class__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__format__‘, ‘__getattribute__‘, ‘__hash__‘, ‘__init__‘, ‘__module__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduceex\_‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘__weakref__‘, ‘_finish_time’, ‘_parse_body’, ‘_start_time’, ‘arguments’, ‘body’, ‘body_arguments’, ‘connection’, ‘cookies’, ‘files’, ‘finish’, ‘full_url’, ‘get_ssl_certificate’, ‘headers’, ‘host’, ‘host_name’, ‘method’, ‘path’, ‘protocol’, ‘query’, ‘query_arguments’, ‘remote_ip’, ‘request_time’, ‘server_connection’, ‘supports_http_1_1’, ‘uri’, ‘version’, ‘write’]
实际请求如下:
function post() {
url = "http://10.126.1.209:8008/page?x=123&y=222&x=234"
var htmlobj=$.ajax({url:url,async:false,data:"abc\nxyx",type:"POST",headers:{"user":"admin"}});
$("#response").html(htmlobj.responseText);
}
名称 | 说明 | 示例 |
---|---|---|
__class__ | 具体的类名 | <class ‘tornado.httputil.HTTPServerRequest’> |
__dict__ | self.request对象所包含的所有非继承属性 | {‘body’:’a=b&aa=bb’, ‘files’: {}, ‘protocol’: ‘http’, ‘connection’: <tornado.http1connection.HTTP1Connection object at 0x0387D330>, ‘body_arguments’: {‘a’: [‘b’], ‘aa’: [‘bb’]}, ‘uri’: ‘/page’, ‘query_arguments’: {}, ‘_start_time’: 1533177225.76, ‘headers’: <tornado.httputil.HTTPHeaders object at 0x0387D470>, ‘host’: ‘10.126.1.209:8008’, ‘version’: ‘HTTP/1.1’, ‘server_connection’: <tornado.http1connection.HTTP1ServerConnection object at 0x0387D2B0>, ‘host_name’: ‘10.126.1.209’, ‘_finish_time’: None, ‘query’: ‘’, ‘arguments’: {‘a’: [‘b’], ‘aa’: [‘bb’]}, ‘path’: ‘/page’, ‘method’: ‘POST’, ‘remote_ip’: ‘10.126.1.209’} |
_start_time | 请求开始时间 | 1533177225.76 |
arguments | 所有请求参数,包含url中的query部分,以及请求Body中的参数。(说明:query参数相同key可以保存多个value,body中的参数同名只会保存最后一个值)。 当请求Body为字符串的时候,将字符串作为arguments的key,value为空值 |
a) {‘y’: [‘222’], ‘x’: [‘123’, ‘234’], ‘aa’: [‘bb’], ‘a’: [‘c’]} b) 请求data变为”abc”时,{‘y’: [‘222’], ‘x’: [‘123’, ‘234’], ‘abc’: [‘’]} |
body | 字符串类型,请求Body内容,urlencode编码后的字符串 | a=c&aa=bb或者abc |
body_arguments | 同arguments,只包含body中的参数 | {‘a’: [‘c’], ‘aa’: [‘bb’]}或者{‘abc’: [‘’]} |
cookies | 获取请求cookies字符串内容 | _xsrf=2|b362be79|83193f43f7fb09b14cbd70ef9bfc1748|1532330344; user=”2|1:0|10:1533116808|4:user|8:YWRtaW4=|ac6a2f9f3df2c67e903490af706fe7881208abb30c4108b87779dd8fffdbe349” |
files | 传输的文件 | |
headers | 请求头 | Origin: http://localhost:63342 Content-Length: 3 Accept-Language: zh-CN,zh;q=0.9 Accept-Encoding: gzip, deflate Connection: keep-alive Accept: / User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 Host: 10.126.1.209:8008 Referer: http://localhost:63342/consul/test.html?_ijt=7qq0e9dtrj0j7ikqsgee0qu9gq Content-Type: application/x-www-form-urlencoded; charset=UTF-8 |
host | 请求的主机 | 10.126.1.209:8008 |
host_name | 主机名 | 10.126.1.209 |
method | 请求的方法 | POST/GET |
path | 请求的资源路径,不带query参数 | /page |
protocol | 协议类型 | http/https |
query | 请求地址中query部分的参数 | x=123&y=222&x=234 |
query_arguments | 类似于arguments,但是只包含query部分 | {‘y’: [‘222’], ‘x’: [‘123’, ‘234’]} |
remote_ip | 请求主机地址 | 10.126.1.209 |
version | 协议版本 | HTTP/1.1 |
2、 RequestHandler响应设置的一些方法
2.1 self.set_header(name,value)
设置响应头
add_header(name,value)
也可设置响应头
2.2 self.get_argument(name,[default])
获取请求参数
如果有多个值只获取最后一个值