Eu tenho uma função que analisa um arquivo CSV com o Pandas e produz um ditado com informações resumidas. Desejo retornar os resultados como resposta de uma exibição do Flask. Como faço para retornar uma resposta JSON?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
jsonify
serializa os dados que você os passa para JSON. Se você deseja serializar os dados por conta própria, faça o quejsonify
é construindo uma resposta comstatus=200
emimetype='application/json'
.fonte
Passe argumentos de palavra-chave para
flask.jsonify
e eles serão exibidos como um objeto JSON.Se você já tem um ditado, pode passá-lo diretamente como
jsonify(d)
.fonte
Se você não quiser usar
jsonify
por algum motivo, pode fazer o que faz manualmente. Ligueflask.json.dumps
para criar dados JSON e, em seguida, retorne uma resposta com oapplication/json
tipo de conteúdo.flask.json
é diferente dojson
módulo embutido . Ele usará osimplejson
módulo mais rápido , se disponível, e permite várias integrações com o aplicativo Flask.fonte
Se você deseja analisar um arquivo carregado pelo usuário, o Início rápido do Flask mostra como obter arquivos dos usuários e acessá-los. Obtenha o arquivo
request.files
e passe-o para a função de resumo.Substitua a
'data'
chave porrequest.files
pelo nome da entrada do arquivo em seu formulário HTML.fonte
Para retornar uma resposta JSON e definir um código de status, você pode usar
make_response
:Inspiração retirada deste comentário no rastreador de problemas do Flask.
fonte
A partir da versão 1.1.0 Flask, se uma visualização retornar um ditado, ela será transformada em uma resposta JSON .
fonte
Eu uso um decorador para retornar o resultado de
jsonfiy
. Eu acho que é mais legível quando uma visão tem vários retornos. Isso não oferece suporte ao retorno de uma tuplacontent, status
, mas lida com o retorno de status de erroapp.errorhandler
.fonte
Antes do Flask 0.11,
jsonfiy
não era permitido retornar uma matriz diretamente. Em vez disso, passe a lista como um argumento de palavra-chave.fonte
No Flask 1.1, se você retornar um dicionário, ele será automaticamente convertido em JSON. Então, se
make_summary()
retornar um dicionário, você podeO SO que pergunta sobre a inclusão do código de status foi fechado como duplicado para este. Portanto, para também responder a essa pergunta, você pode incluir o código de status retornando uma tupla do formulário
(dict, int)
. Odict
é convertido para JSON eint
será o Código de Status HTTP. Sem nenhuma entrada, o Status é o padrão 200. Portanto, no exemplo acima, o código seria 200. No exemplo abaixo, ele é alterado para 201.Você pode verificar o código de status usando
fonte
se for um dict, o balão pode devolvê-lo diretamente (Versão 1.0.2)
fonte
"" " Usando a vista de base da classe Flask " ""
fonte
Frasco 1.1.x
agora a solicitação de suporte do Flask retorna com o json diretamente, o jsonify não é mais necessário
é equivalente a
para obter mais informações, leia aqui https://medium.com/octopus-wealth/returning-json-from-flask-cf4ce6fe9aeb e https://github.com/pallets/flask/pull/3111
fonte