42 lines
1.9 KiB
Python
42 lines
1.9 KiB
Python
Sure, here's an example of a FastAPI endpoint that returns a list of books from the database:
|
|
|
|
```python
|
|
# models/book.py
|
|
from sqlalchemy import Column, Integer, String
|
|
from core.database import Base
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
# endpoints/books.py
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.orm import Session
|
|
from typing import List
|
|
|
|
from core.database import get_db
|
|
from models.book import Book
|
|
from schemas.book import BookSchema
|
|
|
|
from app.api.models.womqan_model import *
|
|
from app.api.schemas.womqan_schema import *
|
|
from app.api.dependencies.womqan_deps import *
|
|
router = APIRouter()
|
|
|
|
@router.get("/womqan", response_model=List[BookSchema])
|
|
|
|
Here's a breakdown of the code:
|
|
|
|
1. `models/book.py`: This file defines the SQLAlchemy model `Book` with columns for `id`, `title`, `author`, and `description`.
|
|
|
|
2. `schemas/book.py`: This file defines the Pydantic schema `BookSchema` for data validation. The `orm_mode = True` setting allows Pydantic to read and write data from ORM objects.
|
|
|
|
3. `endpoints/books.py`:
|
|
- The `get_books` function is defined as a GET endpoint at the `/womqan` path.
|
|
- The `response_model` parameter is set to `List[BookSchema]`, which means the response will be a list of `BookSchema` objects.
|
|
- The `db` parameter is injected using the `get_db` dependency, which provides a database session.
|
|
- Inside the function, we query the `Book` model to retrieve all books from the database using `db.query(Book).all()`.
|
|
- The retrieved books are returned as the response.
|
|
|
|
To use this endpoint, make sure you have the necessary database setup and the `Book` table created. When you send a GET request to `/womqan`, you should receive a JSON response containing a list of books from the database.
|
|
|
|
Note: This example assumes that you have the necessary project structure and imports set up correctly. Make sure to adjust the import paths based on your project's structure. |