• 회원가입
  • 로그인
  • 구글아이디로 로그인

[Tutorial] FastAPI - 소개/설치/실행

목차
  1. FastAPI 소개
  2. FastAPI 설치 가능 환경
  3. FastAPI 설치하기
  4. FastAPI 만들기 - /main.py 파일 생성
  5. FastAPI 실행하기 - 서버 실행 (= /main.py 파일의 app 객체 실행)
  6. FastAPI 확인하기 - URL 주소 접속해 웹페이지 확인
  7. FastAPI (대화형/대안) API 문서 주소

 

FastAPI 소개

공식사이트: https://fastapi.tiangolo.com/ 

 

현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.8+의 API를 빌드하기 위한 웹 프레임워크.

 


[특징]

  • (Starlette/Pydantic/ Python) 기반의 현대적인 웹프레임워크.
  • 주로 API 개발에 사용됨.
  • 비동기 지원으로 고성능 제공.
  • (자동문서화/데이터검증/타입힌팅) 기능이 특징. 
  • (사용자친화적/빠른개발/고성능) 요하는 애플리케이션 구축에 적합.

 

 

FastAPI 설치 가능 환경

 

 

 

FastAPI 설치하기

(리눅스 shell / 윈도우 cmd ) 모드에서 아래 명령어 실행.

 

# FastAPI 설치

pip install fastapi

 

# 프로덕션을 위해 Uvicorn (또는 Hypercorn)과 같은 ASGI 서버도 필요

pip install "uvicorn[standard]"

 


PS1. FastAPI와 uvicorn을 한번에 함께 일괄 설치 가능.

pip install "fastapi[all]"

 


PS2. pip install "uvicorn[standard]" 명령어 의미.

Python 패키지 관리 도구인 pip를 사용하여 "uvicorn"이라는 패키지를 설치하는 명령어임. (※ 실시간 미리보기 역할 수행.)


  • uvicorn: ASGI(Asynchronous Server Gateway Interface) 애플리케이션을 실행하는 데 사용되는 경량 웹 서버임.
  • [standard]: "standard"는 uvicorn 패키지에 포함된 표준(standard) 기능 외에도 추가적인 기능을 설치하라는 의미임. 특히, "standard" 옵션은 uvicorn 패키지의 표준 의존성 외에도 예제 애플리케이션, 문서 및 개발 도구와 관련된 추가적인 의존성을 포함하여 설치하라는 것을 의미함.
  • 이렇게 함으로써 uvicorn 패키지와 그에 필요한 추가 기능을 모두 설치할 수 있음. (추가 기능을 선택적으로 설치하려면 해당 기능의 이름을 대괄호 안에 넣어서 설치 명령에 추가하면 됨.)

 

 

FastAPI 만들기 - /main.py 파일 생성

 

from typing import Union

from fastapi import FastAPI


app = FastAPI()


@app.get("/")

def read_root():

    return {"홈짱닷컴": "Homzzang.com"}


@app.get("/items/{item_id}")

def read_item(item_id: int, q: Union[str, None] = None):

    return {"item_id": item_id, "q": q}

 


PS1. 회원 님 코드가 async/await 사용한다면, async def 사용

 

from typing import Union

from fastapi import FastAPI


app = FastAPI()


@app.get("/")

async def read_root():

    return {"홈짱닷컴": "Homzzang.com"}


@app.get("/items/{item_id}")

async def read_item(item_id: int, q: Union[str, None] = None):

    return {"item_id": item_id, "q": q}

 


PS2. 코드 의미

 

# typing 모듈에서 Union 타입 힌트를 가져옴

from typing import Union


# fastapi 모듈에서 FastAPI 클래스를 가져옴

from fastapi import FastAPI


# FastAPI 클래스의 인스턴스를 생성하여 애플리케이션을 초기화

app = FastAPI()


# 루트 경로 ("/")에 대한 GET 요청을 처리하는 함수 선언

@app.get("/")

def read_root():

    # JSON 형식의 응답을 반환

    return {"홈짱닷컴": "Homzzang.com"}


# "/items/{item_id}" 경로에 대한 GET 요청을 처리하는 함수 선언

@app.get("/items/{item_id}")

def read_item(item_id: int, q: Union[str, None] = None):

    # item_id는 경로 매개변수로 정수를 받고, q는 쿼리 매개변수로 문자열 또는 None을 받음. 기본값은 None임.

    # JSON 형식의 응답을 반환

    return {"item_id": item_id, "q": q}



PS2.

  • 함수 호출 구문 없어도, FastAPI가 사용자 요청에 대해 자동 응답함.
  • 각 경로에 대응하는 처리 함수명은 서로 달라야 함. (중복되면 안 됨)

 

 

FastAPI 실행하기 - 서버 실행 (= /main.py 파일의 app 객체 실행)

# (리눅스 Shell / 윈도우 cmd)에서 아래 명령어 실행.

 

uvicorn main:app --reload

 


PS. 명령어 의미


main 모듈 (= main.py 파일)에서 가져온 app 객체를 Uvicorn 서버를 통해 실행하며, 코드가 변경되면 자동으로 다시 시작함. (이를 통해 개발자는 코드를 수정하고 빠르게 테스트 가능함.)

※ 더 자세히 공부하고 싶은 분만 아래 읽어보세요.

Uvicorn이라는 ASGI(Asynchronous Server Gateway Interface) 서버를 실행하는 명령어임. 이 명령어는 주로 FastAPI와 같은 ASGI 기반의 웹 애플리케이션을 개발 및 실행할 때 사용됨. 

  • uvicorn: Uvicorn 서버를 실행하는 명령어임. Uvicorn은 ASGI 애플리케이션을 처리하는데 사용되는 경량 서버임.
  • main:app: Uvicorn에게 실행할 ASGI 애플리케이션을 지정하는 부분임. main은 모듈 이름이고, app은 ASGI 애플리케이션 객체임. 즉, main 모듈에서 app 객체를 가져와 실행.
  • --reload: 코드의 변경을 자동으로 감지하고 서버를 다시 시작하는 기능을 활성화하는 옵션임. 개발 중에 코드를 수정할 때 서버를 수동으로 다시 시작할 필요 없이 자동으로 감지하고 다시 시작함.

 

 

FastAPI 확인하기 - URL 주소 접속해 웹페이지 확인

※ uvicorn 경우, 기본적으로 8000 포트 사용. 

 


PS. 코드 해석

  • //items/{item_id} 경로에서 HTTP 요청 받음.
  • 두 경로 모두 HTTP로 잘 알려진 GET 방식으로 받음.
  • /items/{item_id} 경로는 정수형 인자 item_id 갖음.
  • /items/{item_id} 경로는 선택적 문자열 인자 q 갖음.

 

 

FastAPI (대화형/대안) API 문서 주소

 

1. 대화형 API 문서 주소
http://127.0.0.1:8000/docs (※ Swagger UI 기반)


2. 대안 API 문서 주소
http://127.0.0.1:8000/redoc (※ ReDoc 기반)

 


PS. 그누보드6 샘플사이트 경우

 


방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
게시물이 없습니다.
6/5
목록
찾아주셔서 감사합니다. Since 2012