在Python发送Post、Get等请求时,我们使用到requests库。Flask中有一个request库,有其特有的一些方法和属性,注意跟requests不是同一个。
用于服务端获取客户端请求数据。注意:是未经任何处理的原始数据而不管内容类型,如果数据时json的,则取得是json字符串,排序和请求参数一致。
不同方法的示例仅需要更换视图函数,后续仅展示视图函数。
# 注意:flask中的request和requests库不是同一个,要区分开
from flask import Flask, request
# 创建一个flask实例
app = Flask(__name__)
# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
# 获取未经处理过的原始数据而不管内容类型,如果数据格式是json的
# 则取得是json字符串,排序和请求参数一致
data = request.get_data()
print(data)
print(type(data))
return 'hello world'
if __name__ == '__main__':
app.run()
import requests
data = {
"username": "cc",
"password": "123456"
}
url = "http://127.0.0.1:5000/"
resp = requests.post(url=url, json=data)
print('post:', resp)
print('post:', resp.text)
resp = requests.get(url=url, params=data)
print('get:', resp)
print('get:', resp.text)
get.data()获取到的请求数据是字节流,排序和请求参数一致。
获取到的也是未经处理的原始数据,如果数据格式是json的,则取得是json字符串,排序和请求参数一致。request.get_data()效果一样
将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则。
# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
# 将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则。
data = request.get_json()
print(data)
print(type(data))
# 服务端就可以根据字典进行取值
username = request.get_json()["username"]
print(username)
return 'hello world'
将请求参数做了处理,得到字典格式,方便服务端按键取值,提取到username是“cc”。
注意:get请求是没有字典的,不能够取值,运行时可以注释掉get方法。
跟request.get_json()效果相同。得到的是字典格式的,因此排序会打乱,依据字典排序规则。
代码如下:
# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
# 将请求参数做了处理,得到的是字典格式的,因此排序会打乱,依据字典排序规则
data = request.json
print(data)
print(type(data))
# 如果这里的key服务端写错了,客户端请求时,就会出现500
username = request.json['username']
print(username)
return 'hello world'
# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
# 可以获取单个的值
username = request.args.get("username")
print(username)
return 'hello world'
# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():
# 可以获取get请求的所有参数,返回值是ImmutableMutiDict(不可变的多字典)类型
i = request.args
print(i)
# 将获得的参数转化成字典
j = i.to_dict()
print(j)
print(type(j))
print(j["username"])
return 'hello world'
当服务端key写错时,就会报500错误,例如可以把key username改成usename,运行后看下效果。
仅创建了实例,并没有视图函数,启动socket服务后,访问地址就会报404。或者请求url填写错误。
from flask import Flask
# 创建一个flask实例
app = Flask(__name__)
if __name__ == '__main__':
app.run()