Použijte jsonify() místo json.dumps() ve Flasku
Zde porozumíme funkci jsonify() ve webovém frameworku Flask pro Python, která převádí výstup funkce na objekt odpovědi JSON. Je to podobné jako u j son.dumps() funkce ve standardní knihovně Pythonu, která převádí objekt Pythonu na řetězec ve formátu JSON.
Co je jsonify()
Funkce jsonify() je užitečná v aplikacích Flask, protože automaticky nastavuje správná záhlaví odpovědí a typ obsahu pro odpovědi JSON a umožňuje vám snadno vracet data ve formátu JSON z vašich obslužných programů směrování. Díky tomu je snazší a pohodlnější vytvářet rozhraní API, která vracejí data JSON.
Syntaxe funkce jsonify().
Tato funkce přijímá jeden nebo více pozičních argumentů, které představují data, která mají být převedena na objekt odpovědi JSON, a libovolný počet argumentů klíčových slov, které se používají k přizpůsobení objektu odpovědi JSON.
jsonify(*args, **kwargs)
Příklad jsonify() s bez argumentu
Můžete použít jsonify() bez jakýchkoli argumentů, v tomto případě vrátí prázdný objekt odpovědi JSON s výchozím stavovým kódem 200 (OK) a výchozím typem obsahu application/json.
Python3
from> flask> import> Flask, jsonify> app> => Flask(__name__)> @app> .route(> '/api/users'> )> def> get_users():> > return> jsonify()> |
Příklad jsonify() s argumenty
V tomto příkladu voláme jsonify() s jedním pozičním argumentem (seznam uživatelských objektů) a také dvěma argumenty klíčového slova se stavem a mimetypem. Argument status se používá k nastavení kódu stavu HTTP pro odpověď a argument mimetype se používá k nastavení typu obsahu pro odpověď.
Python3
from> flask> import> Flask, jsonify> app> => Flask(__name__)> @app> .route(> '/api/users'> )> def> get_users():> > users> => [{> 'id'> :> 1> ,> 'username'> :> 'Alice'> }, {> 'id'> :> 2> ,> 'username'> :> 'Bob'> }]> > return> jsonify(users, status> => 200> , mimetype> => 'application/json'> )> |
metoda jsonify() ve Flasku
V tomto příkladu máme aplikaci Flask s trasou, která vrací seznam uživatelských objektů. Když klient zadá požadavek na tuto trasu, provede se funkce get_users() a seznam uživatelských objektů se převede na objekt odpovědi JSON pomocí funkce jsonify(). Tento objekt odpovědi JSON je poté odeslán zpět klientovi.
Python3
from> flask> import> Flask, jsonify> app> => Flask(__name__)> @app> .route(> '/'> )> def> get_users():> > print> (> 'Using jsonify'> )> > users> => [{> 'id'> :> 1> ,> 'username'> :> 'sweety'> },> > {> 'id'> :> 2> ,> 'username'> :> 'pallavi'> }]> > return> jsonify({> 'users'> : users})> if> __name__> => => '__main__'> :> > app.run()> |
Výstup:
metoda jsonify().
metoda json.dumps() ve Flasku
Na rozdíl od toho, pokud byste použili json.dumps() budete muset sami převést seznam uživatelských objektů na řetězec ve formátu JSON a poté nastavit příslušné hlavičky odpovědí a ručně vrátit odpověď klientovi:
Použití jsonify() je obecně jednodušší a pohodlnější než použití json.dumps(), proto se doporučuje používat jsonify() kdykoli je to možné v aplikacích Flask.
Python3
from> flask> import> Flask, Response> import> json> app> => Flask(__name__)> @app> .route(> '/api/users'> )> def> get_users():> > users> => [{> 'id'> :> 1> ,> 'username'> :> 'sweety'> },> > {> 'id'> :> 2> ,> 'username'> :> 'pandey'> }]> > response> => Response(> > response> => json.dumps(users),> > status> => 200> ,> > mimetype> => 'application/json'> > )> > return> response> if> __name__> => => '__main__'> :> > app.run()> |
Výstup:
http://127.0.0.1:5000/api/users
Proč používat jsonify() místo json.dumps()
Existuje několik důvodů, proč se v aplikacích Flask doporučuje používat funkci jsonify() místo funkce json.dumps():
- Funkce jsonify() je pohodlnější a jednodušší než json.dumps(). jsonify() má jednoduchou a intuitivní syntaxi a automaticky zpracovává podrobnosti o převodu vašich dat na objekt odpovědi JSON a jejich vrácení klientovi. Naproti tomu json.dumps() vyžaduje, abyste si tyto detaily zpracovali sami, což může být časově náročnější a náchylnější k chybám.
- Funkce jsonify() automaticky nastaví správná záhlaví odpovědí a typ obsahu pro odpovědi JSON, zatímco json.dumps() nikoli. To znamená, že při použití jsonify() nemusíte ručně nastavovat záhlaví Content-Type na application/json, ale při použití json.dumps() byste to museli udělat ručně.
- jsonify() vám umožňuje snadno vracet data ve formátu JSON z vašich obslužných programů směrování, zatímco json.dumps() nikoli. Pomocí jsonify() můžete jednoduše vrátit data, která chcete převést na objekt odpovědi JSON z vašeho obslužného programu trasy, a jsonify() se postará o zbytek. Pomocí json.dumps() byste museli sami převést data na řetězec ve formátu JSON a poté je vrátit jako součást objektu Response.
- Celkově může použití jsonify() místo json.dumps() v aplikacích Flask usnadnit a pohodlněji vytvářet rozhraní API, která vracejí data JSON. Umožňuje vám soustředit se na data a logiku vaší aplikace a nemusíte se starat o podrobnosti formátování a vracení odpovědí JSON.