Requests/Routing

GET should be idempotent and append things to a querystring POST is for data to be processed

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