Entrada

Métodos HTTP
(GET, POST, PUT, DELETE)

Flask: Métodos HTTP
(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étodoUso típicoEn Flask
GETLeer datosmethods=["GET"]
POSTCrear datosmethods=["POST"]
PUTActualizar datosmethods=["PUT"]
DELETEEliminar datosmethods=["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étodoPara qué sirveEjemplo
GETObtener datosLeer una página
POSTEnviar datosEnviar un formulario
PUTActualizar datosEditar un registro
DELETEEliminar datosBorrar 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 /submit en el navegador responde “Mostrar formulario”
  • Si envías un formulario con POST responde “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")

Ruta usando GET y POST

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.