3.2 KiB
3.2 KiB
FastAPI – DELETE Method (Remove Resource)
This document demonstrates how to use the HTTP DELETE method in FastAPI to remove an existing resource. It completes the CRUD workflow using GET, POST, PUT, and DELETE operations.
Example Application
Create or update main.py with the following content:
from fastapi import FastAPI
app = FastAPI()
users = [
{"name": "abbas", "age": 20},
{"name": "mmd", "age": 37},
{"name": "asghar", "age": 19},
]
@app.get("/")
def home_page():
return {"msg": "API is working"}
@app.get("/users")
def show_users():
return users
@app.post("/create_user")
def create_user(name: str, age: int):
new_user = {"name": name, "age": age}
users.append(new_user)
return {"msg": f"user {name} with age {age} created"}
@app.put("/update_user/{target_name}")
def update_user(target_name: str, age: int):
for user in users:
if user["name"] == target_name:
user["age"] = age
return {"msg": f"user {target_name} updated"}
return {"msg": "user not found"}
@app.delete("/delete_user/{target_name}")
def delete_user(target_name: str):
for user in users:
if user["name"] == target_name:
users.remove(user)
return {"msg": f"user {target_name} deleted"}
return {"msg": "user not found"}
Code Overview
DELETE Endpoint Definition
@app.delete("/delete_user/{target_name}")
def delete_user(target_name: str):
- Registers an HTTP DELETE endpoint
target_nameis a path parameter- Used to remove a user from the data store
Delete Logic
for user in users:
if user["name"] == target_name:
users.remove(user)
- Iterates through the users list
- Finds a matching user by name
- Removes the user from the list
Success Response
{
"msg": "user abbas deleted"
}
Returned when the user is successfully removed.
Failure Response
{
"msg": "user not found"
}
Returned when the specified user does not exist.
Example Requests
Delete a User
curl -X DELETE "http://localhost:8000/delete_user/abbas"
Verify Deletion
GET /users
Response:
[
{"name": "mmd", "age": 37},
{"name": "asghar", "age": 19}
]
Running the Application
Start the service with uvicorn:
uvicorn main:app --reload
CRUD Endpoint Summary
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
Health check |
| GET | /users |
Retrieve all users |
| POST | /create_user |
Create a user |
| PUT | /update_user/{name} |
Update a user |
| DELETE | /delete_user/{name} |
Delete a user |
Best Practices
- Use DELETE only for resource removal
- Return appropriate HTTP status codes (
204,404) - Ensure delete operations are idempotent
- Avoid modifying in-memory data in production
- Add authentication and authorization for destructive operations
- Log delete actions for auditability
- Use database transactions when deleting persistent data