본문 바로가기
개발공부

백엔드_FastAPI로 서버 만들기

by N잡러 지망생 2023. 6. 30.
728x90

저번에 이어 API 계속이다.

파이썬의 프레임워크 중 하나인 FastAPI로 진행을 하는데

프레임워크에 대해서 한번 더 이해하고 가보자

프레임워크랑 함께 잘 등장하는 아이가 있는데

바로

라이브러리

이다

이 둘의 차이는

프레임워크는 개발자가 정해진 프레임워크의 툴 안에서

개발을 진행해야 한다는 것이고

라이브러리는 개발을 쭈욱 하다가 

필요할 때 가져다 쓸 수 있는게 라이브러리이다.

아무래도

프레임워크를 쓰게 되면 더 제한된 환경에서 개발을 하게 되는 거 같다. 

새로운 프레임 워크를 배울 때는

그 프레임 워크의 공식문서를 읽어봐야 된다고 한다.

그래야 해당 프레임워크 개발자의 의도나 목적에 대해 알 수 있다.

그렇다면 공식 문서를 보자

 

  • 빠름: (Starlette과 Pydantic 덕분에) NodeJS  Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
  • 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가. *
  • 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소. *
  • 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
  • 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
  • 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
  • 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
  • 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.

아주 좋은 말들이 많다.

 

그럼 이제 이 좋은 프레임워크를 사용해보자

사용을 하려면 설치를 해야 한다.

 

파이썬의 프레임워크들이나 패키지들은

pip라는 단축어를 통해 쉽게 다운로드를 할 수 있다

pip는 파이썬 패키지 관리자라는 느낌

 

설치를 하자

 

VScode에서 터미널을 연다

(Ctrl + `)

입력창에

pip install fastapi

를 입력하고

엔터를 누른다.

 

 

설치가 정말 쉽다.

 

 

설치 이후 다음과 같은 문구를 넣어준다

이렇게 넣어주는 이유는

공식문서에서 그렇게 하라고 하니까.....

 

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
def sayHello():
    return {"message": "안녕하세요 N잡러의 사무실입니다."}

여기서 app에  /hello 라는 경로로 들어왔을 때

인사를 해주는 say Hello()라는 API를 만들었다.

이렇게 하 아주 간단한 API를 만든 거다

이제 이 API를 띄어줄 수 있는 서버가 필요하다

 

터미널에 pip install uvicorn[standard]  이렇게 작성을 하고 엔터를 누른다

이후에 uvicorn main:app --reload라고 하면 어떤 웹 서버가 띄어지게 된다.

여기서 uvicorn은 서버라고 보면 되겠고

main은 우리가 만들어 놓은 파이썬 파일이다.

뒤에 app는 코드에서 보면 app=FastAPI 이 부분이다

즉 main 파일 안에 있는 app을 실행시킨다는 것이다.

 

 

이렇게 실행을 하면 중간에 http로 시작하는 게 보일 텐데 컨트롤 클릭을 누르면 아래 같은 창이 띄어질 것이다.

 

 

위에서 hello라는 경로에 인사를 만들어 놨으니 주소창의 맨 뒤에/hello를 적어 보자

그러면 이렇게 응답이 오게 된다.

 

다음은 FastAPI의 강력한 기능에 대해서 알아보자

주소창의 8000 뒤에다가 /docs라고 치면

이 서버에 어떤 API가 적용되고 있는지 한눈에 보인다.

예전 서버 개발자들은 이런 것들도 다 하나하나 설정했다고 한다

이런 식으로 어떤 API가 있고 그 안의 내용이 뭔지 볼 수 있다.

 

더 해보자

이번에는 경로에 아무것도 안 넣고 해 볼 건데

이렇게 하면 루트 경로라고 해서 가장 첫 화면이라고 볼 수 있겠다

@app.get("/")
def sayWelcome():
    return {"message": "어서오세요~"}

주소창에 8000 뒤에 아무것도 없다.

 

그럼 조금 전에 배웠던 docs 경로로 가볼까?

방금 만든 루트경로도 잘 들어와 있다

 

 

이번에는 이렇게 간단하게 API와

웹서버를 만들어 봤다.

 

 

 

뭔가 신기하고 재밌다~~!!

 

결론은

 

 

 

 

 

나 지금 고성

반응형