[Fastapi] object 분석하기(FastAPI, APIRouter, ...)
예시 코드를 먼저 확인해봅시다.
from fastapi import FastAPI, APIRouter
# 1
app = FastAPI(
title="Recipe API", openapi_url="/openapi.json"
)
# 2
api_router = APIRouter()
# 3
@api_router.get("/", status_code=200)
def root() -> dict:
"""
Root Get
"""
return {"msg": "Hello, World!"}
# 4
app.include_router(api_router)
# 5
if __name__ == "__main__":
# Use this for debugging purposes only
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8001, log_level="debug")
1. FastAPI Class
app
인스턴스 선언- FastAPI object이자 API를 위한 모든 기능을 제공함
APIRouter
api_router
인스턴스 선언- API endpoint들을 grouping
app.include_router
메소드로app
인스턴스에api_router
를 등록(register)
왜 FastAPI랑 APIRouter가 분리되어 있을까?
- 간단한 프로젝트의 경우 FastAPI 객체만 사용해도 무방(객체 자체의 역할은 비슷함)
- router가 여러 개일 경우
main.py
에서
- FASTAPI 인스턴스를 선언하고
- 각기 다른 router는 다른 module로부터 import해서
- 한곳에 추가하는 역할
- 마지막에 uvicorn을 통해 서버 run
query Parameter
- path endpoint에 명시된 parameter가 아닌, router function에 인자로 받는 parameter
@api_router.get("/search/", status_code=200) # 3
def search_recipes(
keyword: Optional[str] = None, max_results: Optional[int] = 10 # 4 & 5
) -> dict:
-
위에서
keyword
및max_results
가 keyword parameter이다.- 이것이 URL에서는 아래와 같이 표시될 것이다.
http://localhost:8001/search/?keyword=chicken&max_results=2
-
keyword parameter는 type 과 default가 명시되기도 한다.(이 때
typing
module에 의해Optional
한 argument가 정의되기도 한다.
Query
class
- pydantic 외에 부가적인 조건 및 validation 가능케 함
- Swagger UI에서 Try it 클릭하면 이 조건이 나옴
예시)
keyword: Optional[str] = Query(None, min_length=3, example="chicken"),
- minlength가 추가적으로 표시된 것을 확인
Author And Source
이 문제에 관하여([Fastapi] object 분석하기(FastAPI, APIRouter, ...)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@crosstar1228/Fastapi-object-분석하기FastAPI-APIRouter-저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)