Flask学习笔记(二)-request请求对象+flask解析http请求数据
一、flask请求对象request
request是flask框架的全局对象,你可以通过它来获得当前进入的请求数据,如果是在多线程环境下,flask可以保证你所使用的request对象就是当前这个线程所处理的请求。
服务端代码:
from flask import Flask, request
app = Flask(__name__)
@app.route('/users', methods=['GET', 'POST'])
def users():
print(request.method) # 请求方法
print(request.headers) # 请求的headers
print(request.path) # 资源路径
print(request.url) # 完整的url
print(request.remote_addr) # 客户端IP
print(request.cookies) # 请求的cookie
return 'ok'
if __name__ == '__main__':
app.run(debug=True)
客户端代码:
import requests
cookie_dict = {'name': 'python'}
res = requests.get('http://127.0.0.1:5000/users', cookies=cookie_dict)
服务端程序返回结果:
GET # 请求方法
Content-Type:
Content-Length:
Host: 127.0.0.1:5000
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Cookie: name=python
/users # 资源路径
http://127.0.0.1:5000/users # 完整路径
127.0.0.1 # 客户端ip
{'name': 'python'} # 请求的cookie
二、flask解析http请求数据
flask如何解析http的get请求的参数, 解析post请求提交的表单和json数据,详情可见以下示例
服务端代码:
from flask import Flask,request
app = Flask(__name__)
import pysnooper
#1、解析get请求数据(get请求的参数可以通过request.args来获得,也可以通过request.values来获得)
@pysnooper.snoop()
@app.route('/users1',methods=['GET','POST'])
def users1():
name=request.values['name']
age=request.args['age']
print(name,age)
return 'ok'
#2、获得post请求表单数据(可以通过request.form,也可以通过request.values获得)
@pysnooper.snoop()
@app.route('/users2',methods=['POST'])
def users2():
name=request.form['name']
age=request.values['age']
print(name,age)
return 'ok'
#3、获得json请求数据(post提交的json数据,不能通过args,form.values来获取,而是要用get_json()方法来获取)
@app.route('/users3',methods=['POST'])
def users3():
data=request.get_json()
print(data)
return 'ok'
if __name__ == '__main__':
app.run(debug=True)
响应结果:

客户端代码:
import requests
def request01():
param={
"name":"poly",
"age":14
}
res=requests.get("http://127.0.0.1:5000/users1",params=param,verify=True)
print(res.text)
def request02():
data = {
"name": "poly1",
"age": 15
}
res = requests.post("http://127.0.0.1:5000/users2", data=data, verify=True)
print(res.text)
def request03():
json={'name': 'poly2', 'age': 16}
res=requests.post("http://127.0.0.1:5000/users3",json=json,verify=True)
print(res.text)
if __name__ == '__main__':
request01()
request02()
request03()
响应结果:
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/16720866.html

浙公网安备 33010602011771号