En aquest tema, aprendrem com gestionar diferents mètodes HTTP en una aplicació Flask. Els mètodes HTTP són essencials per a la comunicació entre el client i el servidor, i cada mètode té un propòsit específic. Els mètodes més comuns són GET, POST, PUT, DELETE, PATCH, entre d'altres.
Conceptes Clau
-
Mètodes HTTP:
- GET: Utilitzat per sol·licitar dades del servidor.
- POST: Utilitzat per enviar dades al servidor.
- PUT: Utilitzat per actualitzar dades existents al servidor.
- DELETE: Utilitzat per eliminar dades del servidor.
- PATCH: Utilitzat per actualitzar parcialment dades existents al servidor.
-
Decoradors de Rutes:
- Flask utilitza decoradors per associar funcions a rutes específiques i mètodes HTTP.
Exemple Pràctic
Configuració de l'Entorn
Assegura't de tenir Flask instal·lat. Si no el tens, pots instal·lar-lo amb pip:
Creació d'una Aplicació Flask
Comencem creant una aplicació Flask bàsica que gestioni diferents mètodes HTTP.
from flask import Flask, request, jsonify app = Flask(__name__) # Ruta per gestionar el mètode GET @app.route('/items', methods=['GET']) def get_items(): items = ["item1", "item2", "item3"] return jsonify(items) # Ruta per gestionar el mètode POST @app.route('/items', methods=['POST']) def create_item(): new_item = request.json.get('item') return jsonify({"message": f"Item '{new_item}' creat amb èxit!"}), 201 # Ruta per gestionar el mètode PUT @app.route('/items/<int:item_id>', methods=['PUT']) def update_item(item_id): updated_item = request.json.get('item') return jsonify({"message": f"Item {item_id} actualitzat a '{updated_item}'"}), 200 # Ruta per gestionar el mètode DELETE @app.route('/items/<int:item_id>', methods=['DELETE']) def delete_item(item_id): return jsonify({"message": f"Item {item_id} eliminat amb èxit!"}), 200 if __name__ == '__main__': app.run(debug=True)
Explicació del Codi
-
Importacions:
Flask
: La classe principal de Flask.request
: Per accedir a les dades de la sol·licitud.jsonify
: Per retornar respostes JSON.
-
Creació de l'Aplicació:
app = Flask(__name__)
: Crea una instància de l'aplicació Flask.
-
Rutes i Mètodes:
- GET: La ruta
/items
retorna una llista d'ítems. - POST: La ruta
/items
crea un nou ítem basat en les dades JSON enviades en la sol·licitud. - PUT: La ruta
/items/<int:item_id>
actualitza un ítem existent identificat peritem_id
. - DELETE: La ruta
/items/<int:item_id>
elimina un ítem existent identificat peritem_id
.
- GET: La ruta
-
Execució de l'Aplicació:
app.run(debug=True)
: Executa l'aplicació en mode de depuració.
Exercicis Pràctics
Exercici 1: Afegir un Mètode PATCH
Afegiu una ruta que gestioni el mètode PATCH per actualitzar parcialment un ítem.
Solució
# Ruta per gestionar el mètode PATCH @app.route('/items/<int:item_id>', methods=['PATCH']) def partial_update_item(item_id): partial_update = request.json.get('item') return jsonify({"message": f"Item {item_id} parcialment actualitzat a '{partial_update}'"}), 200
Exercici 2: Validació de Dades
Modifiqueu la ruta POST per validar que l'ítem no sigui buit abans de crear-lo.
Solució
@app.route('/items', methods=['POST']) def create_item(): new_item = request.json.get('item') if not new_item: return jsonify({"error": "L'ítem no pot estar buit"}), 400 return jsonify({"message": f"Item '{new_item}' creat amb èxit!"}), 201
Errors Comuns i Consells
-
Error 405 Method Not Allowed:
- Assegura't que la ruta està configurada per gestionar el mètode HTTP correcte.
-
Error 400 Bad Request:
- Verifica que les dades enviades en la sol·licitud són correctes i compleixen amb els requisits esperats.
Conclusió
En aquesta secció, hem après com gestionar diferents mètodes HTTP en una aplicació Flask. Hem vist exemples pràctics de com utilitzar GET, POST, PUT, DELETE i PATCH, i hem practicat amb exercicis per reforçar els conceptes apresos. Ara estàs preparat per gestionar mètodes HTTP en les teves pròpies aplicacions Flask.
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