-
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
FastAPI의 기본 docs 페이지입니다.
어떤 매소드가 있는지, 어떤 답변이 오는지 예시가 보입니다.
또한 PUT 요청과 같은 Body를 받을 수 있는 요청은 다릅니다.
(PUT을 위해 Model을 만드는 코드를 작성해야 하지만 코드에 미리 적어뒀습니다.)
이미지에 보이듯 Try it out으로 request parameter를 보낼 수 있습니다.
Request body에 입력 후 Execute를 하면 Response에 응답이 오는 걸 알 수 있습니다.
2. redoc
다음은 redoc 페이지 입니다.
docs와는 다른 UI를 경험할 수 있습니다.
결론(나의 생각)
django의 restframework의 api view를 생각하면 맛깔나 보이긴 합니다.
request body와 response를 한 번에 볼 수 있으니 좋아 보이긴 하는데 조금 더 알아봐야겠습니다.
다음에는 데이터베이스를 연결하여 진짜 API처럼 보이는 내용을 포스팅하겠습니다.
Reference
https://fastapi.tiangolo.com/ko/