So I have a flask URL, where there are 2 separate arguments. I want to run the same function with either no arguments, just the first or both. If no specific value is set, I want the unaccounted for arguments to get value None (as opposed to just not existing at all).
My current solution involves using 3 @app.route statements, and I was wondering if there was something more efficient i’ve missed.
@app.route('/URL',defaults={'Arg1':None,'Arg2':None})
@app.route('/URL/<string:Arg1>',defaults={'Arg2':None})
@app.route('/URL/<string:Arg1>/<string:Arg2>')
Thanks!
Advertisement
Answer
In that case, just create simple route and access those variables in request.args like so:
@app.route('/test', methods=['GET'])
def test():
arg1 = request.args.get('arg1', None)
arg2 = request.args.get('arg2', None)
if arg1:
pass # Do something with it
elif arg2:
pass # Do something with it
else:
pass # do something when no args given
return jsonify()
And then in url you can pass like this:
/test or /test?arg2=321 or /test?arg1=123 or /test?arg1=123&arg2=321