Uporabite jsonify() namesto json.dumps() v Flasku
Tukaj bomo razumeli funkcijo jsonify() v spletnem ogrodju Flask za Python, ki pretvori izhod funkcije v odzivni objekt JSON. Podobno je j son.dumps() funkcijo v standardni knjižnici Python, ki objekt Python pretvori v niz, oblikovan v obliki JSON.
Kaj je jsonify()
Funkcija jsonify() je uporabna v aplikacijah Flask, ker samodejno nastavi pravilne glave odgovorov in vrsto vsebine za odgovore JSON ter vam omogoča enostavno vrnitev podatkov v obliki JSON iz vaših upravljavcev poti. Tako je ustvarjanje API-jev, ki vračajo podatke JSON, preprostejše in priročnejše.
Sintaksa funkcije jsonify().
Ta funkcija sprejme enega ali več pozicijskih argumentov, ki predstavljajo podatke, ki jih je treba pretvoriti v odzivni objekt JSON, in poljubno število ključnih argumentov, ki se uporabljajo za prilagoditev odzivnega objekta JSON.
jsonify(*args, **kwargs)
Primer jsonify() z brez argumenta
Jsonify() lahko uporabite brez argumentov; v tem primeru bo vrnil prazen odzivni objekt JSON s privzeto statusno kodo 200 (OK) in privzeto vrsto vsebine application/json.
Python3
from> flask> import> Flask, jsonify> app> => Flask(__name__)> @app> .route(> '/api/users'> )> def> get_users():> > return> jsonify()> |
Primer jsonify() z argumenti
V tem primeru kličemo jsonify() z enim pozicijskim argumentom (seznam uporabniških objektov), pa tudi z dvema argumentoma ključne besede s statusom in tipom mime. Argument stanja se uporablja za nastavitev kode stanja HTTP za odgovor, argument mimetype pa za nastavitev vrste vsebine za odgovor.
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'> )> |
jsonify() v Flasku
V tem primeru imamo aplikacijo Flask s potjo, ki vrne seznam uporabniških objektov. Ko odjemalec pošlje zahtevo tej poti, se izvede funkcija get_users() in seznam uporabniških objektov se pretvori v odzivni objekt JSON s funkcijo jsonify(). Ta odzivni objekt JSON se nato pošlje nazaj odjemalcu.
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()> |
Izhod:
metoda jsonify().
json.dumps() metoda v Flasku
V nasprotju s tem, če bi uporabili json.dumps() funkcijo, bi morali sami pretvoriti seznam uporabniških objektov v niz, oblikovan v obliki JSON, nato pa nastaviti ustrezne glave odgovorov in ročno vrniti odgovor odjemalcu:
Uporaba jsonify() je na splošno enostavnejša in bolj priročna kot uporaba json.dumps(), zato je priporočljivo, da uporabite jsonify(), kadar koli je to mogoče v aplikacijah 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()> |
Izhod:
http://127.0.0.1:5000/api/users
Zakaj uporabljati jsonify() namesto json.dumps()
Obstaja več razlogov, zakaj je priporočljivo uporabljati funkcijo jsonify() namesto funkcije json.dumps() v aplikacijah Flask:
- Jsonify() je bolj priročen in lažji za uporabo kot json.dumps(). jsonify() ima preprosto in intuitivno sintakso ter samodejno obravnava podrobnosti pretvorbe vaših podatkov v odzivni objekt JSON in njihovega vračanja odjemalcu. Nasprotno pa json.dumps() zahteva, da te podrobnosti obdelate sami, kar je lahko bolj zamudno in nagnjeno k napakam.
- Jsonify() samodejno nastavi pravilne glave odgovorov in vrsto vsebine za odgovore JSON, medtem ko json.dumps() ne. To pomeni, da vam pri uporabi jsonify() ni treba ročno nastaviti glave Content-Type na application/json, pri uporabi json.dumps() pa bi to morali narediti ročno.
- jsonify() vam omogoča preprosto vrnitev podatkov v formatu JSON iz vaših upravljavcev poti, medtem ko json.dumps() tega ne omogoča. Z jsonify() lahko preprosto vrnete podatke, ki jih želite pretvoriti v odzivni objekt JSON iz vašega upravljalnika poti, jsonify() pa bo poskrbel za ostalo. Z json.dumps() bi morali sami pretvoriti podatke v niz, oblikovan v JSON, in jih nato vrniti kot del objekta Response.
- Na splošno lahko z uporabo jsonify() namesto json.dumps() v aplikacijah Flask postane lažje in bolj priročno ustvarjanje API-jev, ki vračajo podatke JSON. Omogoča vam, da se osredotočite na podatke in logiko vaše aplikacije, namesto da bi morali skrbeti za podrobnosti oblikovanja in vračanja odgovorov JSON.