ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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/

     

     

    댓글

Designed by Tistory.