1、Flask Request 请求参数获取:
首先,参数可以放到url中,可以放在head中,可以放在body中
①请求参数包括url路径参数、其他参数(包括:
data # body中的原始数据
form # body中的form表单数据
args # 查询参数跟在url中的?号后面
cookies # cookies内容
headers # head内容,字典形式的
method # 请求方式
url # 路径信息,包括请求路径及参数
files # body中上传的文件
等)、session
②url路径参数通过转换器来进行正则获取,其他参数通过请求上下文request.来获取(包括data form args cookies headers
method url files
等)和 session.get('key_name')
来获取
2、
json.dumps()与jsonify()的区别:
json_dict={
"u_id"=23523,
"u_name"="uu"
}
jsonify(json_dict)
# `jsonify函数将字典数据转换为json格式,并设置head响应头:Content-Type:application/json`
json.dumps()
仅仅是转换为json格式
json.loads()
将json格式转换为字典
3、构造response返回数据两种方式:
1、元组方式
return “内容(body)”, 状态码, 响应头(head)
eg: return "ok", 200, {"content-length":30} # 这种方式实际上是flask自动构造了response对象,然后再返回的
2、make_response方式
resp = make_response("body content")2
resp.headers["content-length"] = 30
resp.status = "404 not found" # 这里必须传完整的响应码,包括数字和文字说明
return resp
4、带查询参数的路由
# /aa?channel_id=2323
@app.route("/aa")
def aa():
c_id = request.args.get("channel_id")
return "channel id is {}".format(c_id)
通过 /aa?channel_id=2323进行访问,仍然可以访问到aa视图。
5、请求钩子
请求执行顺序:
请求→
before_first_request(首次请求时执行一次,后面的请求不再执行)→
before_request→
view函数→
after_request→
`teardown_reques`t
用4个装饰器实现钩子函数
@app.before_first_request # 首次请求时调用装饰的钩子函数
@app.before_request # 每次请求时调用,但如果钩子函数返回了,则不会调用视图函数
@app.after_request # 如果视图函数没有报异常情况下每次视图函数执行后执行,钩子函数需要接收参数,实参是视图函数的返回值,最后通过这个函数返回给客户端!
@app.teardown_request # 每次请求后最后一次调用的钩子函数,接收一个参数:服务器出现的错误信息,如果有错误则抛出。每次都会执行,负责抛出错误!