diff --git a/endpoints/boy.get.py b/endpoints/boy.get.py new file mode 100644 index 0000000..dbae2b7 --- /dev/null +++ b/endpoints/boy.get.py @@ -0,0 +1,57 @@ +Sure, here's an example of a FastAPI endpoint that returns a list of books from a database using SQLAlchemy and Pydantic: + +```python +from typing import List +from fastapi import APIRouter, Depends +from sqlalchemy.orm import Session +from database import SessionLocal +import models +import schemas + +router = APIRouter() + +# Dependency +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + +# SQLAlchemy model +class Book(models.Base): + __tablename__ = "books" + + id = models.Column(models.Integer, primary_key=True, index=True) + title = models.Column(models.String, index=True) + author = models.Column(models.String, index=True) + description = models.Column(models.String, index=True) + +# Pydantic schema +class BookSchema(schemas.BaseModel): + id: int + title: str + author: str + description: str + + class Config: + orm_mode = True + +@router.get("/books", response_model=List[BookSchema]) +def get_books(db: Session = Depends(get_db)): + books = db.query(Book).all() + return books +``` + +Here's a breakdown of the code: + +1. We import the necessary modules and classes from FastAPI, SQLAlchemy, and Pydantic. +2. We define a SQLAlchemy model `Book` with columns for `id`, `title`, `author`, and `description`. +3. We define a Pydantic schema `BookSchema` that maps to the `Book` model. +4. We create a dependency function `get_db` that establishes a database session and yields it to the endpoint function. +5. We define the `GET` endpoint `/books` that retrieves all books from the database using `db.query(Book).all()`. +6. The `response_model` parameter is set to `List[BookSchema]`, which tells FastAPI to use the `BookSchema` to serialize the response data. + +To use this endpoint, you would need to have a running database with a table named `books` and the corresponding columns. When you send a `GET` request to `/books`, the endpoint will retrieve all books from the database and return them as a list of JSON objects. + +Note that this is a basic example, and you may want to add error handling, pagination, filtering, and other features depending on your requirements. \ No newline at end of file