Métodos HTTP
(GET, POST, PUT, DELETE)
Flask: Métodos HTTP
(GET, POST, PUT, DELETE)
(GET, POST, PUT, DELETE)
Cuando trabajas con aplicaciones web o APIs, las rutas no solo responden a URLs, sino también a métodos HTTP.
Por defecto, las rutas aceptan GET, pero puedes aceptar otros métodos como POST.
| Método | Uso típico | En Flask |
|---|---|---|
| GET | Leer datos | methods=["GET"] |
| POST | Crear datos | methods=["POST"] |
| PUT | Actualizar datos | methods=["PUT"] |
| DELETE | Eliminar datos | methods=["DELETE"] |
Los métodos HTTP son acciones que el cliente (navegador o app) envía al servidor para indicar qué quiere hacer.
1. ¿Qué son los métodos HTTP?
Los métodos más usados son:
| Método | Para qué sirve | Ejemplo |
|---|---|---|
| GET | Obtener datos | Leer una página |
| POST | Enviar datos | Enviar un formulario |
| PUT | Actualizar datos | Editar un registro |
| DELETE | Eliminar datos | Borrar un registro |
2. Rutas por defecto (GET)
Por defecto, Flask usa el método GET.
1
2
3
@app.route("/")
def home():
return "Inicio"
3. Usar POST en Flask
Para aceptar POST, debes indicarlo explícitamente:
1
2
3
4
5
6
7
from flask import request
@app.route("/submit", methods=["GET", "POST"])
def submit():
if request.method == "POST":
return "Formulario enviado"
return "Mostrar formulario"
¿Qué hace esto?:
- Si visitas
/submiten el navegador responde “Mostrar formulario” - Si envías un formulario con
POSTresponde “Formulario enviado”
4. Ejemplo con formulario
templates/form.html
1
2
3
4
<form action="/submit" method="POST">
<input type="text" name="username" placeholder="Usuario">
<button type="submit">Enviar</button>
</form>
app.py
1
2
3
4
5
6
7
8
9
10
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route("/submit", methods=["GET", "POST"])
def submit():
if request.method == "POST":
username = request.form.get("username")
return f"Hola {username}, formulario recibido"
return render_template("form.html")
5. PUT y DELETE en Flask (para APIs)
Estos métodos se usan principalmente en APIs, no tanto en páginas web normales.
Ejemplo con datos en memoria
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from flask import Flask, request, jsonify
app = Flask(__name__)
items = [
{"id": 1, "name": "Item 1"},
{"id": 2, "name": "Item 2"}
]
@app.route("/items", methods=["GET"])
def get_items():
return jsonify(items)
@app.route("/items", methods=["POST"])
def add_item():
new_item = request.json
items.append(new_item)
return jsonify(new_item), 201
@app.route("/items/<int:item_id>", methods=["PUT"])
def update_item(item_id):
data = request.json
for item in items:
if item["id"] == item_id:
item["name"] = data.get("name", item["name"])
return jsonify(item)
return jsonify({"error": "Item no encontrado"}), 404
@app.route("/items/<int:item_id>", methods=["DELETE"])
def delete_item(item_id):
for item in items:
if item["id"] == item_id:
items.remove(item)
return jsonify({"message": "Item eliminado"})
return jsonify({"error": "Item no encontrado"}), 404
if __name__ == "__main__":
app.run(debug=True)
Esta entrada está licenciada bajo CC BY 4.0 por el autor.
