Použite jsonify() namiesto json.dumps() vo Flasku
Tu porozumieme funkcii jsonify() vo webovom rámci Flask pre Python, ktorá konvertuje výstup funkcie na objekt odpovede JSON. Je to podobné ako j son.dumps() funkciu v štandardnej knižnici Pythonu, ktorá konvertuje objekt Python na reťazec vo formáte JSON.
čo je jsonify()
Funkcia jsonify() je užitočná v aplikáciách Flask, pretože automaticky nastavuje správne hlavičky odpovedí a typ obsahu pre odpovede JSON a umožňuje vám jednoducho vrátiť údaje vo formáte JSON z vašich obslužných nástrojov smerovania. Vďaka tomu je vytváranie rozhraní API, ktoré vracajú údaje JSON, jednoduchšie a pohodlnejšie.
Syntax funkcie jsonify().
Táto funkcia obsahuje jeden alebo viacero pozičných argumentov, ktoré predstavujú údaje, ktoré sa majú skonvertovať na objekt odpovede JSON, a ľubovoľný počet argumentov kľúčových slov, ktoré sa používajú na prispôsobenie objektu odpovede JSON.
jsonify(*args, **kwargs)
Príklad jsonify() s bez argumentu
Môžete použiť jsonify() bez akýchkoľvek argumentov, v tomto prípade vráti prázdny objekt odpovede JSON s predvoleným stavovým kódom 200 (OK) a predvoleným typom obsahu application/json.
Python3
from> flask> import> Flask, jsonify> app> => Flask(__name__)> @app> .route(> '/api/users'> )> def> get_users():> > return> jsonify()> |
Príklad jsonify() s argumentmi
V tomto príklade voláme jsonify() s jedným pozičným argumentom (zoznam objektov používateľa), ako aj s dvomi argumentmi kľúčového slova so stavom a mimetype. Argument status sa používa na nastavenie kódu stavu HTTP pre odpoveď a argument mimetype sa používa na nastavenie typu obsahu pre odpoveď.
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'> )> |
metóda jsonify() vo Flasku
V tomto príklade máme aplikáciu Flask s cestou, ktorá vracia zoznam objektov používateľa. Keď klient zadá požiadavku na túto cestu, vykoná sa funkcia get_users() a zoznam užívateľských objektov sa skonvertuje na objekt odpovede JSON pomocou funkcie jsonify(). Tento objekt odpovede JSON sa potom odošle späť 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ýkon:
metóda jsonify().
metóda json.dumps() vo Flasku
Na rozdiel od toho, ak by ste použili json.dumps() budete musieť sami previesť zoznam užívateľských objektov na reťazec vo formáte JSON a potom nastaviť príslušné hlavičky odpovede a vrátiť odpoveď klientovi manuálne:
Používanie jsonify() je vo všeobecnosti jednoduchšie a pohodlnejšie ako používanie json.dumps(), preto sa odporúča používať jsonify() vždy, keď je to možné v aplikáciá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ýkon:
http://127.0.0.1:5000/api/users
Prečo používať jsonify() namiesto json.dumps()
Existuje niekoľko dôvodov, prečo sa v aplikáciách Flask odporúča použiť funkciu jsonify() namiesto funkcie json.dumps():
- jsonify() je pohodlnejšie a jednoduchšie na použitie ako json.dumps(). jsonify() má jednoduchú a intuitívnu syntax a automaticky spracováva podrobnosti o konverzii vašich údajov na objekt odpovede JSON a ich vrátení klientovi. Na rozdiel od toho json.dumps() vyžaduje, aby ste tieto detaily zvládli sami, čo môže byť časovo náročnejšie a náchylnejšie na chyby.
- Funkcia jsonify() automaticky nastavuje správne hlavičky odpovedí a typ obsahu pre odpovede JSON, zatiaľ čo json.dumps() nie. To znamená, že pri použití jsonify() nemusíte manuálne nastaviť hlavičku Content-Type na application/json, ale pri použití json.dumps() by ste to museli urobiť manuálne.
- jsonify() vám umožňuje jednoducho vrátiť údaje vo formáte JSON z vašich obslužných programov smerovania, zatiaľ čo json.dumps() nie. Pomocou jsonify() môžete jednoducho vrátiť údaje, ktoré chcete previesť na objekt odpovede JSON z vášho obslužného programu trasy, a jsonify() sa postará o zvyšok. Pomocou json.dumps() by ste museli sami previesť údaje na reťazec vo formáte JSON a potom ich vrátiť ako súčasť objektu Response.
- Celkovo môže používanie jsonify() namiesto json.dumps() v aplikáciách Flask zjednodušiť a zjednodušiť vytváranie rozhraní API, ktoré vracajú údaje JSON. Umožňuje vám to zamerať sa na údaje a logiku vašej aplikácie a nemusíte sa starať o podrobnosti formátovania a vracania odpovedí JSON.