From 78f6dcb356c3ae91c45814f32328b6c0963f8ee3 Mon Sep 17 00:00:00 2001 From: RadinPirouz Date: Fri, 23 Jan 2026 16:20:35 +0330 Subject: [PATCH] fastapi doc : from post doc --- Docs/Services/FastAPI/12-From-Post.md | 165 ++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 Docs/Services/FastAPI/12-From-Post.md diff --git a/Docs/Services/FastAPI/12-From-Post.md b/Docs/Services/FastAPI/12-From-Post.md new file mode 100644 index 0000000..bcafa60 --- /dev/null +++ b/Docs/Services/FastAPI/12-From-Post.md @@ -0,0 +1,165 @@ +# FastAPI – POST Requests with Form Data + +This document demonstrates how to handle **form-based POST requests** in FastAPI using the `Form()` dependency. +Form data is commonly used in **HTML forms**, authentication flows, and legacy systems. + +--- + +## Example Application + +Create or update `main.py` with the following content: + +```python +from fastapi import FastAPI, Form, status +from fastapi.responses import JSONResponse + +app = FastAPI() + +users_db = [ + {"id": "1", "name": "radin", "password": "123"} +] + + +@app.post("/user/") +def get_user_from_form( + target: int = Form( + ..., + gt=0, + alias="User ID", + description="Enter target unique ID", + ) +): + for item in users_db: + if item["id"] == str(target): + return JSONResponse( + content={"msg": f"Your target user name is {item['name']}"}, + status_code=status.HTTP_200_OK, + ) + + return JSONResponse( + content={"msg": "user not found"}, + status_code=status.HTTP_404_NOT_FOUND, + ) +``` + +--- + +## Form Data Overview + +### What is Form Data + +Form data is sent in the request body using: + +``` +Content-Type: application/x-www-form-urlencoded +``` + +or + +``` +multipart/form-data +``` + +FastAPI requires the `Form()` dependency to explicitly declare form inputs. + +--- + +## Endpoint Behavior + +### Endpoint + +```http +POST /user/ +``` + +### Request Body (Form Data) + +``` +User ID=1 +``` + +### Example Using `curl` + +```bash +curl -X POST "http://localhost:8000/user/" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "User ID=1" +``` + +--- + +## Response Examples + +### Success Response + +```json +{ + "msg": "Your target user name is radin" +} +``` + +Status Code: **200 OK** + +--- + +### Failure Response + +```json +{ + "msg": "user not found" +} +``` + +Status Code: **404 Not Found** + +--- + +## `Form()` Parameter Configuration + +```python +Form( + ..., + gt=0, + alias="User ID", + description="Enter target unique ID" +) +``` + +| Parameter | Description | +| ------------- | ------------------------------- | +| `...` | Field is required | +| `gt=0` | Value must be greater than zero | +| `alias` | Custom form field name | +| `description` | Displayed in API docs | + +--- + +## Swagger / OpenAPI Behavior + +* Form fields appear as input fields +* Aliases are reflected in the UI +* Validation rules are enforced automatically +* Errors are returned with clear messages + +--- + +## Running the Application + +Start the service using `uvicorn`: + +```bash +uvicorn main:app --reload +``` + +--- + +## Best Practices + +* Use form data only when required (e.g. HTML forms) +* Prefer JSON for APIs and services +* Avoid exposing sensitive fields in plain form data +* Use HTTPS for all form submissions +* Validate and sanitize all inputs +* Use authentication and hashing for passwords +* Do not store credentials in plain text +