[%]
파이썬 FastAPI 라우터 예제를 알아보자
익명(211.47)
2024-01-28 12:13
추천 0
router = APIRouter(prefix=
"/v1", tags=[
"v1"])
@router.post("/ingredients", status_code=status.HTTP_201_CREATED)
async def create_ingredient(
data: models.IngredientPayload,
session: AsyncSession = Depends(get_db_session),
) -> models.Ingredient:
ingredient = db_models.Ingredient(**data.dict())
session.add(ingredient)
await session.commit()
await session.refresh(ingredient)
return models.Ingredient.from_orm(ingredient)
@router.get("/ingredients", status_code=status.HTTP_200_OK)
async def get_ingredients(
session: AsyncSession = Depends(get_db_session),
) -> list[models.Ingredient]:
ingredients =
await session.scalars(select(db_models.Ingredient))
return [models.Ingredient.from_orm(ingredient)
for ingredient
in ingredients]
@router.get("/ingredients/{pk}", status_code=status.HTTP_200_OK)
async def get_ingredient(
pk: uuid.UUID,
session: AsyncSession = Depends(get_db_session),
) -> models.Ingredient:
ingredient =
await session.get(db_models.Ingredient, pk)
if ingredient
is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=
"Ingredient does not exist",
)
return models.Ingredient.from_orm(ingredient)
컨트롤러에 DB 의존성 주입해서
갖다 박으라는게 예제다 ㄷ
무슨 문제라도 - dc App
보통 crud.py에서 비즈니스로직 넣던데
어차피 예제잖아
예제는 무조건 짧고 간결해야되니까 그렇게 한거임