404 Not Found
).DELETE es un método HTTP que se utiliza para eliminar un recurso identificado por un ID. Por lo general, se pasa el identificador en la URL (Path Parameter).
Diferencias con los métodos anteriores:
Vamos a seguir con el mismo ejemplo de productos que venimos usando:
from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel, Field
from typing import List
app = FastAPI(title="API de Productos con DELETE")
# --------- Modelo ----------
class Producto(BaseModel):
codigo: int = Field(gt=0, description="Identificador único")
descripcion: str = Field(min_length=3, max_length=100)
precio: float = Field(gt=0, description="Precio mayor que 0")
# --------- Base simulada ----------
productos_db: List[Producto] = [
Producto(codigo=1, descripcion="Teclado", precio=50.0),
Producto(codigo=2, descripcion="Mouse", precio=30.0),
]
@app.delete("/productos/{codigo}", status_code=status.HTTP_204_NO_CONTENT)
def eliminar_producto(codigo: int):
# Buscar producto por índice
for index, producto in enumerate(productos_db):
if producto.codigo == codigo:
productos_db.pop(index) # Eliminar de la lista
return # No devolvemos nada porque el recurso ya no existe
# Si no se encontró
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Producto no encontrado"
)
@app.delete("/productos/{codigo}")
codigo
se recibe como Path Parameter para identificar el producto.productos_db
para buscar el producto.pop(index)
./docs
)DELETE /productos/1
# Respuesta:
Código HTTP: 204 No Content
(No devuelve cuerpo)
DELETE /productos/99
# Respuesta:
{
"detail": "Producto no encontrado"
}
Código HTTP: 404 Not Found
204 No Content
(eliminación exitosa) y 404 Not Found
(si no existe).200 OK
con el recurso eliminado, la convención más común es 204 No Content
./productos/99
). ¿Qué respuesta recibes?200 OK
en lugar de solo un 204
.