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
Flaskijsonifydes del paquetflask. - Creem una instància de l'aplicació Flask.
- Definim una ruta
/api/dataque 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,requestijsonifydes del paquetflask. - Creem una instància de l'aplicació Flask.
- Definim una ruta
/api/dataque 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
getdels 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
