fastapi doc: added status,httpexpetion doc

This commit is contained in:
RadinPirouz
2026-01-21 01:30:40 +03:30
parent 729e73bae8
commit aa3957945c

View File

@@ -0,0 +1,192 @@
# FastAPI HTTP Status Codes and Error Handling
This document demonstrates how to use **HTTP status codes** in FastAPI to accurately represent the result of an API operation.
Correct status codes improve API reliability, observability, and client-side behavior.
---
## Example Application
Create or update `main.py` with the following content:
```python
from fastapi import FastAPI, status, HTTPException
app = FastAPI()
users = [
{"name": "abbas", "age": 20},
{"name": "mmd", "age": 37},
{"name": "asghar", "age": 19},
]
@app.get("/", status_code=status.HTTP_200_OK)
def home_page():
return {"msg": "API is working"}
@app.get("/users", status_code=status.HTTP_200_OK)
def show_users():
return users
@app.post("/create_user", status_code=status.HTTP_201_CREATED)
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}", status_code=status.HTTP_202_ACCEPTED)
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"}
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="User not found"
)
@app.delete("/delete_user/{target_name}", status_code=status.HTTP_204_NO_CONTENT)
def delete_user(target_name: str):
for user in users:
if user["name"] == target_name:
users.remove(user)
return
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="User not found"
)
```
---
## Status Code Overview
HTTP status codes communicate the result of an API request to clients and monitoring systems.
| Code | Meaning | Usage |
| ---- | ---------- | --------------------------------- |
| 200 | OK | Successful GET requests |
| 201 | Created | Resource successfully created |
| 202 | Accepted | Update request accepted |
| 204 | No Content | Resource deleted successfully |
| 404 | Not Found | Requested resource does not exist |
---
## Endpoint Behavior
### Root Endpoint
```http
GET /
```
* Returns HTTP **200 OK**
* Used as a health check
---
### Create User
```http
POST /create_user
```
* Returns HTTP **201 Created**
* Indicates successful resource creation
---
### Update User
```http
PUT /update_user/{target_name}
```
* Returns HTTP **202 Accepted** on success
* Raises HTTP **404 Not Found** if user does not exist
---
### Delete User
```http
DELETE /delete_user/{target_name}
```
* Returns HTTP **204 No Content** on success
* Returns no response body
* Raises HTTP **404 Not Found** if user does not exist
---
## Error Handling with `HTTPException`
```python
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="User not found"
)
```
* Immediately stops request processing
* Returns structured error responses
* Automatically serialized by FastAPI
**Error Response Example:**
```json
{
"detail": "User not found"
}
```
---
## Example Requests
### Create User
```bash
curl -X POST "http://localhost:8000/create_user?name=ali&age=25"
```
### Update User
```bash
curl -X PUT "http://localhost:8000/update_user/ali?age=30"
```
### Delete User
```bash
curl -X DELETE "http://localhost:8000/delete_user/ali"
```
---
## Running the Application
Start the application using `uvicorn`:
```bash
uvicorn main:app --reload
```
---
## Best Practices
* Always return meaningful HTTP status codes
* Use `status` module instead of hard-coded numbers
* Use `HTTPException` for predictable error handling
* Do not return response bodies with `204 No Content`
* Align status codes with REST conventions
* Ensure monitoring systems rely on status codes, not messages
* Standardize error formats across services