Flask提供了全局的request
和 response 来封装客户端请求及服务端响应对象
request请求对象
-
request.args
获取通过url(如?key=value)提供的参数
from flask import Flask, request, jsonify
app = Flask(__name__)
tasks = []
@app.route('/get/'])
def get_task():
if not request.args or 'id' not in request.args:
# 没有指定id则返回全部
return jsonify(tasks)
else:
task_id = request.args['id']
task = list(filter(lambda t: t['id'] == int(task_id), tasks))
return jsonify(task[0]) if len(task)>0 else jsonify({'result': 'not found'})
-
request.form
获取通过表单提交的参数
@app.route('/login', methods=['POST'])
def login():
error = None
if valid_login(request.form['username'], request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
-
request.json
获取json参数
@app.route('/login', methods=['POST'])
def login():
if not request.json:
task = {
"id": request.json["id"],
"task": request.json["task"]
}
tasks.append(task)
return jsonify({'result': 'add successfully'})
else:
return jsonify({'result': 'error'})
-
request.files
获取上传文件
浏览器页面必须制定enctype="multipart/form-data"
才会向服务器传送文件,已上传的文件在服务器内存,可通过save()保存文件
from flask import request
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('/var/www/uploads/uploaded_file.txt')
详细可参加上传文件方案
-
request.cookies
操作cookies
读取 cookies:
from flask import request
@app.route('/')
def index():
username = request.cookies.get('username')
# use cookies.get(key) instead of cookies[key] to not get a
# KeyError if the cookie is missing.
储存 cookies:
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
response响应对象
json是目前api最常用的传输格式,可通过falsk.jsonify()返回
@app.route('/get/<id>', methods=['GET'])
def get_task(id)
task = list(filter(lambda t: t['id'] == int(id), tasks))
return jsonify(task[0]) if len(task)>0 else jsonify({'result': 'not found'})
网友评论