Laboratorio. Trabajando con Flask
8. API Restful
8.3. POST
Importamos las librería:
from flask import request
from datetime import datetime
Código para productos
@app.route("/api/productos", methods=["POST"])
def crear_producto():
data = request.get_json(silent=True)
if not data:
return jsonify({"error": "No se ha enviado JSON"}), 400
# Campos obligatorios según la tabla
campos = ["nombre", "descripcion", "precio", "stock", "disponible", "categoria_id"]
for campo in campos:
if campo not in data:
return jsonify({"error": f"Falta el campo {campo}"}), 400
with engine.begin() as conn:
result = conn.execute(
productos_t.insert().values(
nombre=data["nombre"],
descripcion=data["descripcion"],
precio=data["precio"],
stock=data["stock"],
disponible=1 if data["disponible"] else 0,
fecha_creacion=datetime.now(),
categoria_id=data["categoria_id"]
)
)
nuevo_id = result.lastrowid
producto = conn.execute(
select(productos_t).where(productos_t.c.id == nuevo_id)
).mappings().first()
return jsonify(dict(producto)), 201
Lo probamos con postman o con cual:
curl -X POST http://127.0.0.1:5000/api/productos \
-H "Content-Type: application/json" \
-d '{
"nombre": "Televison guapa guapa",
"descripcion": "Creado con POST",
"precio": 25.50,
"stock": 8,
"disponible": true,
"categoria_id": 1
}'