diff --git a/Docs/Services/FastAPI/04-Post-Method.md b/Docs/Services/FastAPI/04-Post-Method.md new file mode 100644 index 0000000..dbb5f6a --- /dev/null +++ b/Docs/Services/FastAPI/04-Post-Method.md @@ -0,0 +1,127 @@ +# FastAPI – POST Endpoint and JSON Input + +This section demonstrates how to handle **POST requests** in FastAPI to create new resources using request data and return JSON responses. + +--- + +## Example Application (POST Request) + +Extend `main.py` with the following code: + +```python +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.post("/new_user") +def create_user(name: str, age: int): + new_user = {"name": name, "age": age} + users.append(new_user) + return {"msg": "User created successfully"} +``` + +--- + +## Code Overview + +### POST Endpoint Definition + +```python +@app.post("/new_user") +def create_user(name: str, age: int): +``` + +* Registers an HTTP **POST** endpoint at `/new_user` +* Accepts input parameters: + + * `name` → string + * `age` → integer +* FastAPI automatically validates input types + +--- + +### Creating a New Resource + +```python +new_user = {"name": name, "age": age} +users.append(new_user) +``` + +* Constructs a new user object +* Appends it to the in-memory `users` list +* Simulates creating a record in a database + +--- + +### JSON Response + +```python +return {"msg": "User created successfully"} +``` + +* Returns a structured JSON response +* Automatically serialized by FastAPI + +--- + +## Example Request + +### Using `curl` + +```bash +curl -X POST "http://localhost:8000/new_user?name=ali&age=25" +``` + +### Response + +```json +{ + "msg": "User created successfully" +} +``` + +--- + +## Verifying the Result + +After creating a user, retrieve the updated list: + +```http +GET /users +``` + +Response will now include the newly added user. + +--- + +## Running the Application + +Start the FastAPI service using `uvicorn`: + +```bash +uvicorn main:app --reload +``` + +--- + +## Best Practices + +* POST requests should be used to create resources +* Avoid modifying in-memory data in production environments +* Use request bodies with Pydantic models instead of query parameters for real APIs +* Return appropriate HTTP status codes (`201 Created`) +* Validate and sanitize all client-provided input +* Replace in-memory storage with persistent databases +