본문 바로가기
Dev DBAN/개발 이야기

FAST API로 REST API만들기 - 초기 세팅

by 디반 2021. 12. 12. 15:37
반응형

 

FastAPI로 REST API 만들기

1. 초기 세팅

 

유튜브 영상이 보기 힘든 분은 글을 읽어주세요 :)

 

저는 pycham 2021.2.3을 사용해 FastAPI로 RESTAPI를 만들어 볼 예정입니다.

참고로 파이썬은 3.9버전을 사용하고 있습니다 :)

최근 업데이트 이후 파이참에서도 손 쉽게 FastAPI 프로젝트를 실행할 수 있지만 저는 알려드리기 위해 빈 프로젝트에서 한 번 실행 하도록 하겠습니다.

 

위와 같은 main.py가 생성이 되고 hi라는 말과 함께 이상한 코드들이 보일 겁니다.

이걸 먼저 지워주겠습니다.

 

그 다음으로 현재 어떤 라이브러리가 가상환경에 구성이 되어 있는지 확인해보고 필요한 것들을 하나씩 추가 해보도록 하겠습니다.

# 설치된 라이브러리 목록 확인 법

pip list

 

그 다음으로 FastAPI와 웹서버를 열 uvicorn을 설치해줍니다. 

그 다음 다시 pip list로 확인하여 라이브러리가 정상적으로 설치가 되었나 확인해줍니다.

# 우리가 설치해야 하는 파이썬 라이브러리

# 우리가 사용할 웹프레임 워크
pip install fastapi

# 우리가 사용할 웹서버
pip install uvicorn

 

설치가 완료가 되었다면 이제 한 번 나만의 웹서버를 열어볼 차례입니다. 

main.py에 이와 같은 코드를 한 번 작성해 봅시다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def first():
    hi = '안녕하세요'
    return hi

 

그럼 이제 웹서버를 열어볼 차례입니다. 

아래와 같은 코드를 터미널 창을 열어 한 번 실행 시켜봅시다.

uvicorn main:app --reload

 

그럼 아래와 같은 글자들이 터미널에 찍히고 웹서버가 열리게 됩니다.

 

 

그 다음 우리는 이제 요청을 보내면 정상적으로 확인이 되는지 확인해보겠습니다.

만약 정상적으로 요청이 들어왔다면 200 OK를 보여주면서 "안녕하세요"가 나올 것이고 아니라면 404 Not Found가 나타납니다.

200 OK일 경우

 

404 Not Found일 경우

 

지금 우리는 FastAPI를 통해 GET으로 데이터를 조회하는 API를 완성시켰습니다.

그럼 여기서 조금 더 나아가 POST로 데이터를 BODY에 넣어 보내볼까요?

@app.get만 있는 코드에 @app.post라는 친구도 하나 만들어서 같이 넣어보겠습니다.

from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()

class Item(BaseModel):
    name : str
    number : int

@app.post("/")
async def first_post(item : Item):
    return item

@app.get("/")
async def first():
    hi = '안녕하세요'
    return hi

 

일단 어떻게 작동하는지 모르겠으니 다시 한 번 웹서버를 열어 확인해보겠습니다.

 

어? 우리는 분명 똑같은 url에 GET이랑 POST도 같이 넣어서 해봤는데 GET만 나왔습니다.

혹시 url가 똑같아서 그런가 싶어 한 번 url을 바꿔서 재실행 시켜 보겠습니다.

 

405 Method Not Allowed  메소드가 일치하지 않다는 오류와 함께 GET으로 받아드려집니다. 

왜 이러한 상황이 생겼는지 자세히 알고 싶으신 분들은 아래 글을 함께 읽어보시면 도움이 되실 겁니다.

 

REST API? REST API!

완성된 REST API 프로젝트를 직접 만지고 수정하면서 조금 더 짜임새 있고 효율적으로 활용 및 수정하고 싶다는 마음에 이렇게 한 번 제대로 REST API를 파헤쳐보려고 한다. REST REST는 Representational Sta

mumin-blog.tistory.com

 

HTTP 상태 코드 모음

최근에 저는 REST API를 직접 개발 해보면서 여러 HTTP 상태 코드들을 만날 수가 있었는데 한 번 이 상태 코드들을 직접 정리하면 훨씬 더 이해하기 쉬울 것 같다는 생각에 정리해봅니다. HTTP 상태코

mumin-blog.tistory.com

 

아무튼 이러한 상황을 해결하기 위해서 FastAPI는 정말 고맙게도 Swagger라는 API 플랫폼을 지원합니다. 

이러한 Swagger에 접속을 하기 위해서는 /docs만 치게 된다면 아래와 같이 나오게 됩니다.

 

좋습니다! 

이제 POST로 한 번 요청을 보내보겠습니다.

 

Response Body에 집어넣은 그대로 응답이 돌아왔습니다. 

위와 같이 FastAPI에서는 쉽게 테스트를 할 수 있도록 Swagger를 지원해줄 뿐만 아니라 Redoc도 지원합니다 :)

 

정리를 해보자면

FastAPI는 단 5줄로 웹서버를 열수 있다.

Swagger, Redoc를 사용함으로 쉽게 테스트를 할 수 있다.

uvicorn을 사용해 속도가 엄청나게 빠르다.

 

다음 시간에는 SQLAlchemy를 연동해서 사용해 보도록 하겠습니다. 

그럼 다음시간에 만나요!

 

 

참조

 

자습서 - 사용자 안내서 - 도입부 - FastAPI

자습서 - 사용자 안내서 - 도입부 이 자습서는 FastAPI의 대부분의 기능을 단계별로 사용하는 방법을 보여줍니다. 각 섹션은 이전 섹션을 기반해서 점진적으로 만들어 졌지만, 주제에 따라 다르게

fastapi.tiangolo.com

 

반응형

댓글


"); wcs_do();