2017-07-31 2 views
1

J'écris des Microservices dans Flask qui interagissent entre eux via l'API.Envoi de données via un objet Response dans Python Flask

Lors d'une demande POST, je suis en mesure de renvoyer le code d'état via l'objet Response. Est-il possible que je puisse retourner des données de cette fonction en tant que JSON?

from flask import Flask, Response 

@app.route('/login', methods=['POST']) 
def login(): 
    # Set the status code 
    response = Response(status=200) 

    # How can I return a JSON in my response object as {'username': 'febin'} ? 

    return response 

Répondre

5

Utilisez simplement jsonify() du paquet de flacon. Cette méthode prend n'importe quel type de données sérialisable (par exemple, j'ai utilisé données dans l'exemple suivant).

from flask import jsonify 

@app.route('/login', methods=['POST']) 
def login(): 
    data = {'name': 'nabin khadka'} 
    return jsonify(data) 

Pour retourner un code d'état, il suffit de retourner à la fin du retour comme ci-dessous:

return jsonify(data), 200 
1

Vous pouvez ajouter les données à la réponse comme ceci:

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 

Le type de contenu des données de réponse est définie par mimetype paramètre.

+1

Merci beaucoup. Et il est reçu en tant que json.loads (response.content) –

+0

Ne pas générer les réponses JSON manuellement comme ceci. C'est pour ça que 'jsonify' est pour. – davidism

+0

Quelle est la différence? Au fait, comment incluriez-vous le statut? –