728x90
FastAPI 기본 개념과 환경 설정
강의 목표:
- FastAPI의 기본 개념과 Flask와의 차이점을 이해한다.
- FastAPI를 설치하고, 로컬 환경에서 기본적인 엔드포인트를 구성하고 실행할 수 있다.
강의 세부 내용:
1. FastAPI란?
- FastAPI는 고성능 비동기 웹 프레임워크로, API 개발을 쉽고 빠르게 할 수 있도록 도와줍니다.
- 비동기 지원, 자동 문서화(Swagger, ReDoc), 유효성 검사, 높은 성능 등의 강점을 제공합니다.
- Flask와 FastAPI의 주요 차이점:
- Flask는 동기 방식, FastAPI는 비동기 방식(더 많은 요청을 동시에 처리 가능).
- FastAPI는 Python의 타입 힌트(Type Hints)를 기반으로 데이터 유효성 검사를 자동으로 지원.
- FastAPI는 내장된 OpenAPI 스펙을 제공해 자동 문서화를 지원.
2. FastAPI 설치 및 환경 설정
- Python 버전 확인: FastAPI는 Python 3.7 이상을 요구합니다. 터미널에서 Python 버전을 확인합니다.
python --version
- 가상 환경 설정(선택 사항): 가상 환경을 설정해 프로젝트의 종속성을 분리합니다.
python -m venv env source env/bin/activate # Windows의 경우: .\env\Scripts\activate
- FastAPI 및 Uvicorn 설치: FastAPI는 ASGI 서버인 Uvicorn과 함께 동작하므로 두 가지를 함께 설치합니다.
pip install fastapi uvicorn
실습: FastAPI 서버 구성 및 엔드포인트 작성
1. FastAPI 기본 서버 만들기
설치가 완료되면 FastAPI 애플리케이션을 작성할 수 있습니다.
- main.py 파일을 만들고, 기본적인 FastAPI 서버를 구성해봅니다.
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"message": "Hello, World!"}
- 설명:
- FastAPI()로 애플리케이션 객체를 생성합니다.
- @app.get("/"): HTTP GET 메서드를 처리할 기본 루트 엔드포인트를 정의합니다. 브라우저에서 / 경로로 접속하면 "Hello, World!" 메시지를 반환합니다.
- 비동기 함수인 async def read_root()에서 await 구문을 사용할 수 있는 비동기 처리 환경을 제공합니다.
2. FastAPI 서버 실행
- 터미널에서 다음 명령어를 입력해 FastAPI 서버를 실행합니다.
uvicorn main:app --reload
- 설명:
- uvicorn: FastAPI 애플리케이션을 실행하는 ASGI 서버입니다.
- main:app: main.py 파일의 app 객체를 실행합니다.
- --reload: 코드가 변경될 때 자동으로 서버를 재시작하도록 설정합니다(개발 중 편리함).
- 서버가 실행되면 터미널에 다음과 같은 메시지가 표시됩니다:
INFO: Uvicorn running on http://127.0.0.1:8000
- 브라우저에서 http://127.0.0.1:8000으로 접속하면 JSON 형태의 응답을 확인할 수 있습니다.
{ "message": "Hello, World!" }
3. 기본 엔드포인트 확장
예제 1: 경로 파라미터 사용
FastAPI는 경로 파라미터를 통해 동적인 URL을 처리할 수 있습니다.
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
설명:
- @app.get("/items/{item_id}"): URL 경로에 {}를 사용해 동적 값을 처리할 수 있습니다.
- item_id: int: FastAPI는 타입 힌트를 사용해 파라미터의 타입을 자동으로 인식하고, 유효성 검사를 수행합니다.
- 브라우저에서 http://127.0.0.1:8000/items/10으로 접속하면 {"item_id": 10}을 반환합니다.
예제 2: 쿼리 파라미터 사용
쿼리 파라미터는 URL 경로에 포함되지 않고, ? 뒤에 붙는 파라미터입니다.
@app.get("/users/")
async def read_user(name: str = "Guest"):
return {"user_name": name}
설명:
- name: str = "Guest": 기본값을 "Guest"로 설정해, 쿼리 파라미터가 없을 경우에도 값이 존재하도록 설정할 수 있습니다.
- 브라우저에서 http://127.0.0.1:8000/users/?name=John으로 접속하면 {"user_name": "John"}을 반환합니다.
4. FastAPI의 자동 문서화 기능
FastAPI는 API 문서를 자동으로 생성해줍니다.
- /docs 경로로 접속하면 Swagger UI를 통해 API 문서를 확인할 수 있습니다:
- http://127.0.0.1:8000/docs
- /redoc 경로로 접속하면 ReDoc 문서를 확인할 수 있습니다:
- http://127.0.0.1:8000/redoc
마무리 및 추가 학습
- 이번 강의에서는 FastAPI의 기본적인 개념과 서버 설정을 다루었습니다. 이 강의를 통해 FastAPI로 간단한 API 서버를 로컬에서 실행하고, 엔드포인트를 구성하는 방법을 학습했습니다.
- 다음 강의에서는 데이터를 받아 처리하는 API를 FastAPI로 구현하는 실습을 진행합니다.
728x90
'FastAPI' 카테고리의 다른 글
FastAPI 강좌 5강: 비동기 처리와 성능 최적화 (1) | 2024.10.09 |
---|---|
FastAPI 강좌 4강: 데이터 분석 결과 API 구현 (0) | 2024.10.09 |
FastAPI 강좌 3강: 데이터 처리와 Pandas 연동 (4) | 2024.10.09 |
FastAPI 강좌 2강: 데이터 수집 API 구현 (0) | 2024.10.09 |
데이터 분석 개발자를 위한 FastAPI 강좌 (8강) (1) | 2024.10.09 |