www工作原理:
当用户第一次在地址栏上输入网址后回车,浏览器会根据域名去找DNS,根据域名获取IP地址,然后根据IP地址访问目标服务器
浏览器向服务器发送的对象是请求对象(request)
request请求对象格式:
请求行:请求的第一行,内部包括客户端请求方式访问的路由地址协议及其版本 例如:GET /login HTTP/1.1
请求头:从第二行到空白行之间的所有的key:value的内容都是请求头
请求体:从空白行下面到最后都属于请求体内容,请求体内容可有可无
服务器处理过程:接收客户端请求,处理客户端请求,返回响应对象
响应对象格式:
状态行:响应对象的第一行,包括协议及其版本,响应码,描述信息,例如:HTTP/1.0 200 OK
响应头:从第二行开始到空白行之间所有的key:value组成的内容
响应体:服务器将处理结果封装到响应对象的响应体中,浏览器通过解析响应体中的内容后在浏览器上显示
请求数据的获取:
客户端的请求参数一般存在于:请求体,请求头,url参数
其中url参数有两种:
1.固定参数:类似/index/<str:username>/<str:pwd>,参数值必须传递,否则无法访问成功,固定参数如果没有指定数据类型,则默认为string,如需指定类型可自定义转换器或使用flask内置转换器
2.查询字符串:/index?username=admin&pwd=123,可以传也可不传
接收客户端传递的参数:
A:接受请求体中的参数:request.form
它的返回值也是ImmutableMultiDict类型的对象,获取单个值使用get()方法,获取多个同名的参数值我们使用getlist()
B:接收查询字符串中的参数:request.args
获取一个值:addr = args.get("addr"),获取多个值:addr_list = args.getlist("addr")
C:接收客户端的提交方式:request.method
D:接收客户端访问的网址:request.url
获取客户端完整的访问地址,例如:http://127.0.0.1:5000/login
E:接收客户端访问的路由地址:request.path
获取访问的路由地址,例如:/login
F:接收客户端传递的请求头:request.headers
headers是一个<class 'werkzeug.datastructures.EnvironHeaders'>类型的数据
提取数据的方式有:
使用get()函数获取
使用keys()函数获取所有的key组成的generator对象
使用values()函数后期所有的value组成的generator对象
使用items()获取每一个key:value组成的元组数据,类型也是generator对象
G:接收客户端传递的文件对象:request.files
H:接收客户端传递的原始数据:request.data
I:接收客户端传递的json字符串并自动转化为python字典:request.json 或 request.get_json()
J:获取所有cookie:request.cookies
K:获取主机名(包括ip:port):request.host
M:获取客户端的访问地址:request.remote_addr