Fast API는 Python으로 API 만들기 위한 웹 프레임워크이다.
이름 그대로 빠르다.
효율이 좋은 것은 물론, 코드를 작성하는 방법도 직관적이라 개발 시간 역시 빠른 편이다.
심지어 fast API를 사용하면 스웨거로 API 문서를 자동으로 만들어준다.
pip install fastapi
fastapi를 import해온 후 아래와 같이 사용한다.
app뒤에 get, post, patch, delete와 같은 메소드를 붙이고 함수를 만든다.
from fastapi import FastAPI
app = FastAPI()
#기본적인 구조
@app.get("/")
async def get():
return {"hello":"worlds"}
API를 만들기 전에! 나는 API의 종류를 구분하고 싶다. 계정과 관련있는 API와 게시글 작성과 관련된 API를 다른 파일에서, 다른 path로 관리하고 싶기 때문에 아래와 같은 코드를 추가해주었다.
from fastapi.routing import APIRouter
userRouter=APIRouter(prefix="/user", tags=["user"])
그리고 main.py파일을 이렇게 수정해준다.
app = FastAPI()
app.include_router(diaryRouter)
그러면 이제 요청을 보낼 때 /user라는 path가 기본으로 설정되고, 스웨거 문서에는 tags라는 속성으로 인해 user로 분류될 것이다. 아래 사진처럼 말이다!
3-1 API 요청 함수의 구조
@diaryRouter.get("/{id}")
def get_diary(id:int):
return diary_list.get(id)
기본적인 구조는 이렇게 생겼다.
경로에는 중괄호를 이용해 parameter를 받을 수 있으며, 함수의 인자로 받을 수 있다.
물론 실질적인 예제는 DB도 연결해 조회하고, insert도 해야하니 좀 더 복잡하겠지만 말이다.
fast API의 공식문서 예제이다.
이렇게 클라이언트로부터 파라미터로 받을 데이터의 타입을 정해주어야한다.
그렇게 정해주면, fast API가 함수에서 받는 request body를 알아서 우리가 만든 class로 매칭해준다.
그럼 우리는 item[name] 처럼 사용할 수 있다.
클라이언트에서 요청을 하면, 백단에서는 성공적으로 데이터를 줄 수도 있고 데이터가 없을 수도 있다.
이런 경우의 예외처리를 HTTP exception을 이용하여 할 수 있다.
이렇게 import를 해주면 된다.
from fastapi import FastAPI, HTTPException
사용할 때는 return이 아닌 raise를 사용하면 되고,
첫번째 인자로는 상태코드를 두번째 인자로는 메세지를 입력해준다.
# 출처