Sending JSON and status code with a Flask response [duplicate]
Solution 1:
Use flask.jsonify()
. This method takes any serializable data type. For example I have used a dictionary data
in the following example.
from flask import jsonify
@app.route('/login', methods=['POST'])
def login():
data = {'name': 'nabin khadka'}
return jsonify(data)
To return a status code, return a tuple of the response and code:
return jsonify(data), 200
Note that 200 is the default status code, so it's not necessary to specify that code.
UPDATE
As of Flask 1.1, the return statement will automatically jsonify
a dictionary in the first return value. You can return the data directly:
return data
You can also return it with a status code:
return data, 200
Solution 2:
You can append the data to the response like this:
from flask import Flask, json
@app.route('/login', methods=['POST'])
def login():
data = {"some_key":"some_value"} # Your data in JSON-serializable type
response = app.response_class(response=json.dumps(data),
status=200,
mimetype='application/json')
return response
The response data content type is defined by mimetype parameter.