Requests/Routing
GET should be idempotent and append things to a querystring POST is for data to be processed
Code
Contains
request.args
the key/value pairs in the URL query string
request.form
the key/value pairs in the body, from a HTML post form, or JavaScript request that isn't JSON encoded
request.values
combined args and form, preferring args if keys overlap
request.files
files in the body, which Flask keeps separate from form. HTML forms must use enctype=multipart/form-data or files will not be uploaded.
request.data
mimetype Flask does not handle as string
request.get_json()
Get JSON body from a post request
SIMPLE GET ROUTES
Default methods is just get
@app.route('/users/<userid>', methods = ['GET'])
def api_users(userid):
users = {'1':'john', '2':'steve', '3':'bill'}
if userid in users:
return jsonify({userid:users[userid]})
else:
return not_found()SIMPLE POST REQUESTS
Query String
request.args.get('uid')Data sent
from flask import json
@app.route('/messages', methods = ['POST'])
def api_message():
if not request.is_json:
return jsonify({"msg": "Missing JSON in request"}), 400
token = request.json.get('token', None)Combo
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == 'POST':
if valid_login(request.form['username'],
request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
# the code below is executed if the request method
# was GET or the credentials were invalid
return render_template('login.html', error=error)Last updated