FastAPI

FastAPI - 시작하기

친구들안녕 2021. 5. 28. 11:35

서론

REST API와 백엔드 관련 글들을 찾다 보니 FastAPI 관련하여 API 뷰 페이지가 잘 나와있다길래(기술 블로그 어디에 분명 봤었는데 어디 갔는지...) 궁금해서 시작해보는 글입니다.

 

 

시작하기

 

Need To : Python 3.6+

 

설치

pip install fastapi
pip install uvicorn[standard]

*[standard]를 빼고 설치하게되면 Cython기반으로 설치됩니다.

*[all]을 설치하면 선택가능한 의존성 라이브러리들이 설치됩니다.

 

 

코드

FastAPI Docs에 나와있는 기본적인 코드입니다.

# main.py

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_price": item.price, "item_id": item_id}

실행

uvicorn main:app --reload

*--reload 명령은 코드가 변경된 후 서버 재시작하는 코드입니다.

 

 

확인

 

http://127.0.0.1:8000/ 페이지 응답

{  "Hello": "World"  }

http://127.0.0.1:8000/items/1?q=query 페이지 응답

{  "item_id": 222,  "q": "query"  }

코드 몇 줄 안 썼는데 데이터가 잘 넘어오는 걸 볼 수 있습니다.

그러나 여기서 끝이면 너무 아쉽죠.

FastAPI에는 꽤나 멋진 API 문서를 지원합니다.

 

 

API 문서 페이지

1. docs

http://127.0.0.1:8000/docs

FastAPI의 기본 docs 페이지입니다.

어떤 매소드가 있는지, 어떤 답변이 오는지 예시가 보입니다.

Method와 성공여부, 타입, 예시 값(타입)을 알려준다.

 

 

또한 PUT 요청과 같은 Body를 받을 수 있는 요청은 다릅니다.

(PUT을 위해 Model을 만드는 코드를 작성해야 하지만 코드에 미리 적어뒀습니다.)

이미지에 보이듯 Try it out으로 request parameter를 보낼 수 있습니다.

Reuqest body를 전송할수 있다.

 

 

Request body에 입력 후 Execute를 하면 Response에 응답이 오는 걸 알 수 있습니다.

Body 입력 후 Execute하니 Response로 넘어오는 모습

 

2. redoc

다음은 redoc 페이지 입니다.

docs와는 다른 UI를 경험할 수 있습니다.

http://127.0.0.1:8000/redoc

redoc 페이지

 

 

결론(나의 생각)

django의 restframework의 api view를 생각하면 맛깔나 보이긴 합니다.

request body와 response를 한 번에 볼 수 있으니 좋아 보이긴 하는데 조금 더 알아봐야겠습니다.

다음에는 데이터베이스를 연결하여 진짜 API처럼 보이는 내용을 포스팅하겠습니다.

 

 

Reference

https://fastapi.tiangolo.com/ko/