En aquest tema, aprendrem com gestionar dades JSON en una aplicació Flask. JSON (JavaScript Object Notation) és un format lleuger d'intercanvi de dades que és fàcil de llegir i escriure per a humans i fàcil de parsejar i generar per a màquines. És àmpliament utilitzat en APIs RESTful per a la comunicació entre el client i el servidor.
Conceptes Clau
- JSON: Un format de text per a l'intercanvi de dades.
- Serialització: Convertir un objecte Python en una cadena JSON.
- Deserialització: Convertir una cadena JSON en un objecte Python.
Serialització de Dades a JSON
Flask proporciona una manera senzilla de serialitzar dades a JSON utilitzant la funció jsonify
. Aquesta funció converteix automàticament els objectes Python en JSON.
Exemple de Serialització
from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/data', methods=['GET']) def get_data(): data = { 'name': 'John Doe', 'age': 30, 'city': 'Barcelona' } return jsonify(data) if __name__ == '__main__': app.run(debug=True)
Explicació:
- Importem
Flask
ijsonify
des del paquetflask
. - Creem una instància de l'aplicació Flask.
- Definim una ruta
/api/data
que retorna un diccionari Python serialitzat a JSON utilitzantjsonify
.
Deserialització de Dades JSON
Per deserialitzar dades JSON rebudes en una sol·licitud, podem utilitzar el mètode get_json
de l'objecte request
.
Exemple de Deserialització
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/api/data', methods=['POST']) def receive_data(): data = request.get_json() name = data.get('name') age = data.get('age') city = data.get('city') return jsonify({ 'message': f'Received data for {name} who is {age} years old and lives in {city}.' }) if __name__ == '__main__': app.run(debug=True)
Explicació:
- Importem
Flask
,request
ijsonify
des del paquetflask
. - Creem una instància de l'aplicació Flask.
- Definim una ruta
/api/data
que accepta sol·licituds POST. - Utilitzem
request.get_json()
per deserialitzar el cos de la sol·licitud JSON en un diccionari Python. - Extraiem les dades del diccionari i les utilitzem per crear una resposta JSON.
Exercicis Pràctics
Exercici 1: Serialització
Crea una ruta /api/user
que retorni la informació d'un usuari en format JSON. L'usuari ha de tenir els camps username
, email
i role
.
Solució:
@app.route('/api/user', methods=['GET']) def get_user(): user = { 'username': 'johndoe', 'email': '[email protected]', 'role': 'admin' } return jsonify(user)
Exercici 2: Deserialització
Crea una ruta /api/user
que accepti una sol·licitud POST amb dades JSON d'un usuari i retorni un missatge confirmant la recepció de les dades.
Solució:
@app.route('/api/user', methods=['POST']) def receive_user(): user = request.get_json() username = user.get('username') email = user.get('email') role = user.get('role') return jsonify({ 'message': f'Received user {username} with email {email} and role {role}.' })
Errors Comuns i Consells
- Error de Sintaxi JSON: Assegura't que el JSON enviat en la sol·licitud POST sigui vàlid. Utilitza eines com JSONLint per validar el JSON.
- Mètode HTTP Incorrecte: Si la ruta espera una sol·licitud POST, assegura't d'utilitzar el mètode POST en el client.
- Claus Inexistents: Utilitza el mètode
get
dels diccionaris per evitar errors si una clau no existeix.
Conclusió
En aquesta secció, hem après com gestionar dades JSON en una aplicació Flask, incloent la serialització i deserialització de dades. Aquests conceptes són fonamentals per a la creació d'APIs RESTful eficients i robustes. En el següent tema, explorarem com autenticar APIs per assegurar les nostres dades.
Curs de Desenvolupament Web amb Flask
Mòdul 1: Introducció a Flask
- Què és Flask?
- Configuració del Teu Entorn de Desenvolupament
- Creant la Teva Primera Aplicació Flask
- Entenent l'Estructura d'una Aplicació Flask
Mòdul 2: Conceptes Bàsics de Flask
- Enrutament i Mapeig d'URL
- Gestió de Mètodes HTTP
- Renderització de Plantilles amb Jinja2
- Treballant amb Fitxers Estàtics
Mòdul 3: Formularis i Entrada d'Usuari
Mòdul 4: Integració de Bases de Dades
- Introducció a Flask-SQLAlchemy
- Definició de Models
- Realització d'Operacions CRUD
- Migracions de Bases de Dades amb Flask-Migrate
Mòdul 5: Autenticació d'Usuaris
- Registre d'Usuaris
- Inici i Tancament de Sessió d'Usuaris
- Hashing de Contrasenyes
- Gestió de Sessions d'Usuaris
Mòdul 6: Conceptes Avançats de Flask
- Blueprints per a Aplicacions Grans
- Gestió d'Errors
- Pàgines d'Error Personalitzades
- Registre i Depuració
Mòdul 7: APIs RESTful amb Flask
- Introducció a les APIs RESTful
- Creació de Punts Finals RESTful
- Gestió de Dades JSON
- Autenticació per a APIs
Mòdul 8: Desplegament i Producció
- Configuració de Flask per a Producció
- Desplegament a Heroku
- Desplegament a AWS
- Monitorització i Optimització del Rendiment
Mòdul 9: Proves i Millors Pràctiques
- Proves Unitàries amb Flask
- Proves d'Integració
- Cobertura de Proves
- Millors Pràctiques per al Desenvolupament amb Flask