Brug jsonify() i stedet for json.dumps() i Flask

Brug jsonify() i stedet for json.dumps() i Flask

Her vil vi forstå funktionen jsonify() i Flask-webframeworket for Python, der konverterer output fra en funktion til et JSON-svarobjekt. Det ligner j søn.dumps() funktion i Python-standardbiblioteket, som konverterer et Python-objekt til en JSON-formateret streng.

Hvad er jsonify()

Funktionen jsonify() er nyttig i Flask-apps, fordi den automatisk indstiller de korrekte svaroverskrifter og indholdstype for JSON-svar, og giver dig mulighed for nemt at returnere JSON-formaterede data fra dine rutebehandlere. Dette gør det nemmere og mere bekvemt at oprette API'er, der returnerer JSON-data.

Syntaks for funktionen jsonify().

Denne funktion tager et eller flere positionsargumenter ind, som repræsenterer de data, der skal konverteres til et JSON-svarobjekt, og et hvilket som helst antal nøgleordsargumenter, som bruges til at tilpasse JSON-svarobjektet.

jsonify(*args, **kwargs)

Eksempel på jsonify() med uden argument

Du kan bruge jsonify() uden nogen argumenter, i dette tilfælde vil det returnere et tomt JSON-svarobjekt med en standardstatuskode på 200 (OK) og en standardindholdstype for applikation/json.

Python3




from> flask> import> Flask, jsonify> app> => Flask(__name__)> @app> .route(> '/api/users'> )> def> get_users():> > return> jsonify()>

Eksempel på jsonify() med argumenter

I dette eksempel kalder vi jsonify() med et enkelt positionsargument (listen over brugerobjekter), samt to søgeordsargumenter med status og mimetype. Statusargumentet bruges til at indstille HTTP-statuskoden for svaret, og mimetype-argumentet bruges til at indstille indholdstypen for svaret.

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()-metoden i Flask

I dette eksempel har vi en Flask-app med en rute, der returnerer en liste over brugerobjekter. Når en klient foretager en anmodning til denne rute, udføres funktionen get_users() og listen over brugerobjekter konverteres til et JSON-svarobjekt ved hjælp af jsonify()-funktionen. Dette JSON-svarobjekt sendes derefter tilbage til klienten.

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()>

Produktion:

Brug jsonify() i stedet for json.dumps() i Flask

jsonify() metode

json.dumps()-metoden i Flask

I modsætning hertil, hvis du skulle bruge json.dumps() funktion, skal du selv konvertere listen over brugerobjekter til en JSON-formateret streng og derefter indstille de passende svarheadere og returnere svaret til klienten manuelt:

At bruge jsonify() er generelt nemmere og mere bekvemt end at bruge json.dumps(), så det anbefales at bruge jsonify() når det er muligt i Flask-apps.

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()>

Produktion:

http://127.0.0.1:5000/api/brugere

Brug jsonify() i stedet for json.dumps() i Flask

Hvorfor bruge jsonify() i stedet for json.dumps()

Der er flere grunde til, at det anbefales at bruge funktionen jsonify() i stedet for funktionen json.dumps() i Flask-apps:

  • jsonify() er mere praktisk og lettere at bruge end json.dumps(). jsonify() har en enkel og intuitiv syntaks, og den håndterer automatisk detaljerne om at konvertere dine data til et JSON-svarobjekt og returnere det til klienten. I modsætning hertil kræver json.dumps(), at du selv håndterer disse detaljer, hvilket kan være mere tidskrævende og udsat for fejl.
  • jsonify() indstiller automatisk de korrekte svaroverskrifter og indholdstype for JSON-svar, mens json.dumps() ikke gør det. Dette betyder, at du ikke manuelt skal indstille Content-Type-headeren til application/json, når du bruger jsonify(), men du skal gøre det manuelt, når du bruger json.dumps().
  • jsonify() giver dig mulighed for nemt at returnere JSON-formaterede data fra dine rutehandlere, mens json.dumps() ikke gør det. Med jsonify() kan du blot returnere de data, som du ønsker skal konverteres til et JSON-svarobjekt fra din rutehandler, og jsonify() tager sig af resten. Med json.dumps() skal du selv konvertere dataene til en JSON-formateret streng og derefter returnere den som en del af et Response-objekt.
  • Samlet set kan brug af jsonify() i stedet for json.dumps() i Flask-apps gøre det nemmere og mere bekvemt at oprette API'er, der returnerer JSON-data. Det giver dig mulighed for at fokusere på dataene og logikken i din app, i stedet for at skulle bekymre dig om detaljerne i formatering og returnering af JSON-svar.