FastAPI 사용해보기 - (1)

ironcat·2022년 4월 13일
0

fastapi

목록 보기
1/1
post-thumbnail

FastAPI

FastAPI는 처음 Django를 공부할 때 우연히 보게 되었던 프레임워크였다. 그 때는 관련글도 별로 없고 사용하는 곳들도 거의 없었는데, 요근래 찾아보니 FastAPI를 사용하는 곳이 많은 것 같아 놀랐다. 약간 Django는 백오피스(admin)쪽에 사용하면서 FastAPI로 rest api를 구현하는 경우가 있는 것 같고... 프렘웤 하나만 사용하지 않고 3개를 모두 사용하는 것 같다. (FastAPI + Django + Flask)

Fast를 찾아봤을 때 인상 깊은 것은 빠르다는 점. 그리고 type hint를 사용한다는 점. python의 경우 타입이 없어 단점으로 언급이 많이 되는데.. python 3.5부터 type hint가 추가 되었다. (아래 코드 참고)

def sum(a: int, b: int) -> int:
	return a + b

FastAPI


이제 공식 문서를 참고하여 테스트 앱을 하나 만들어 보려고 한다.

  1. fastapi 설치
    pip install fastapi

  2. ASGI 서버 설치
    pip install uvicorn[standard]

  3. 코드 작성

from typing import Optional
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}
  1. 실행
    uvicorn main:app --reload

브라우저로 http://127.0.0.1:8000/items/5?q=somequery 로 접속 시 아래 json 응답을 확인 할 수 있다.

{"item_id": 5, "q": "somequery"}

http://127.0.0.1/docs 로 접속 시 API 문서 확인이 가능하다.

예제 심화 코드 작성

from typing import Optional

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: Optional[bool] = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}
profile
공부하는 블로그

0개의 댓글