목차
FastAPI 소개
FastAPI 설치 가능 환경
FastAPI 설치하기
FastAPI 만들기 - /main.py 파일 생성
FastAPI 실행하기 - 서버 실행 (= /main.py 파일의 app 객체 실행)
FastAPI 확인하기 - URL 주소 접속해 웹페이지 확인
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 샘플사이트 경우
주소 복사
랜덤 이동