Files
python-doc/Docs/Services/FastAPI/03-Get-Method.md
2026-01-19 21:24:10 +03:30

170 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FastAPI GET Endpoints and JSON Responses
This document demonstrates how to define multiple **GET endpoints** in FastAPI, return JSON responses, and use **path parameters** to retrieve specific data from an in-memory dataset.
---
## Example Application
Create or update `main.py` with the following content:
```python
from fastapi import FastAPI
app = FastAPI()
users = [
{"name": "abbas", "age": 20},
{"name": "mmd", "age": 37},
{"name": "asghar", "age": 19},
]
@app.get("/")
def root_dir():
return {"message": "API is working"}
@app.get("/users")
def get_users():
return users
@app.get("/user/{name_input}")
def get_user_by_name(name_input: str):
for item in users:
if item["name"] == name_input:
return {"information": item}
return {"message": "User not found"}
```
---
## Code Overview
### Application Initialization
```python
app = FastAPI()
```
Initializes the FastAPI application instance.
---
### In-Memory Data Store
```python
users = [
{"name": "abbas", "age": 20},
{"name": "mmd", "age": 37},
{"name": "asghar", "age": 19},
]
```
* Simulates a database using a Python list
* Each user is represented as a JSON-compatible dictionary
* Suitable for development and testing purposes
---
## Defined Endpoints
### Root Endpoint
```http
GET /
```
**Response:**
```json
{
"message": "API is working"
}
```
Used as a health check or readiness probe.
---
### Get All Users
```http
GET /users
```
**Response:**
```json
[
{"name": "abbas", "age": 20},
{"name": "mmd", "age": 37},
{"name": "asghar", "age": 19}
]
```
Returns the full list of users as JSON.
---
### Get User by Name (Path Parameter)
```http
GET /user/{name_input}
```
**Example Request:**
```http
GET /user/abbas
```
**Successful Response:**
```json
{
"information": {
"name": "abbas",
"age": 20
}
}
```
**Failure Response:**
```json
{
"message": "User not found"
}
```
---
## Path Parameters
* `name_input` is a dynamic path parameter
* Automatically validated and converted to `str` by FastAPI
* Used to filter data at runtime
---
## Running the Application
Use `uvicorn` to start the service:
```bash
uvicorn main:app --reload
```
---
## Best Practices
* Use structured JSON responses (`key: value`) instead of tuples
* Validate user input when moving beyond in-memory data
* Replace in-memory storage with a database for production
* Use proper HTTP status codes (`404`, `200`) in real-world APIs
* Separate routing, models, and business logic as the project grows