[Backend]FastAPI 입문 1 : Uvicorn 이해하기, 간단한 웹 서버 구현

건너별·2022년 2월 22일
4

fastapi

목록 보기
1/6

📌Fast api

  • python web framework
  • API를 만들 수 있고, python 3.6 버전 이상에서 적용 가능함

1) 주요한 특징

  • 데이터 타입을 엔드포인트로 명시하지 않아도 된다(알아서 알맞게 바꾸어 준다)
  • Uvicorn ASGI Server 를 사용한다

🤔ASGI란?

  • Asynchronous Server Gateway Interface의 약자
  • 비동기 web server를 의미함
    - async / await 구문을 사용

🤔비동기 방식이 뭔데?

2) 장점

  • 빠르다. 퍼포먼스가 좋다
  • 코드가 간단하다.
  • 버그가 적다.

📌Uvicorn

  • lightweight(매우 가벼운) ASGI 서버
  • fastapi framework만으로는 웹 개발을 할 수 없고, ASGI와 호환되는 웹 서버가 필요함
  • 비동기 방식이 가능한 python web server framework(Fastapi가 대표적)application 간의 표준 interface를 제공함
  • 배포에 별도의 준비가 필요 없음


[fastapi로 구축한 서버 모식도]

정리하자면,

  • Fast api는 비동기 방식의 web server framework
  • uvicorn은 비동기 방식의 http server -> ASCI
  • 이 둘을 이용해서 서비스 배포가 가능

설치 및 코드 구현 🧐

버전 : 우분투 20.04 ($ lsb release -a 명령어로 확인)
디렉토리 구성, 가상환경 구축 과정은 생략하겠습니다.

1) fastapi 및 uvicorn 설치

$ pip install fastapi 'uvicorn[standard]'

프레임워크 및 웹서버가 생성되었습니다.

2) main.py 파일 생성 후 아래의 간단한 코드를 작성하여 저장

from fastapi import FastAPI

app = FastAPI() # 인스턴스 생성

@app.get("/") # get method로 '/'에 해당하는  생성
def root():
    return {'Hello':'World!'} 

3) 서버 생성합니다.

$ uvicorn main:app --reload

main : 모듈명을 의미합니다. # (main.py)
app : FastAPI로부터 생성된 인스턴스를 의미합니다. # app=FastAPI()
--reload : 코드 수정시 새로고침됨을 의미합니다. (Flask의 app.run(debug=True)와 같은 효과)

서버가 생성되었습니다. 8000번 포트에 아래 출력값을 확인합니다.

http request 및 response도 확인해볼까요?

endpoint란?🤔

  • 특정 서비스의 client 들이 접근할 수 있는 웹 주소 (URL)을 의미

Reference

profile
romantic ai developer

0개의 댓글