FastAPI를 공부할 때 가장 좋은 시작은 설명을 오래 읽는 것보다, 서버를 실제로 띄우고 브라우저에서 응답을 확인해 보는 것입니다. FastAPI는 Python 함수에 경로를 붙여 API를 만드는 웹 프레임워크입니다. uv는 Python 프로젝트를 초기화하고 의존성을 설치해 주는 경량 패키지 매니저입니다. uvicorn은 FastAPI 앱을 HTTP 요청에 연결해 주는 ASGI 서버입니다. 1편에서 세운 "핵심 경로만 남긴다"는 원칙을 그대로 따라 이번 글은 설치와 첫 실행에 집중합니다. 목표는 uv·FastAPI·uvicorn 역할을 구분하고, 다음 글에서 파라미터 연습으로 곧장 넘어갈 기반을 만드는 것입니다.
이번 글에서 새로 나오는 용어
- uv: Python 프로젝트를 빠르게 초기화하고 패키지를 설치·실행해 주는 경량 매니저로, 글 전반의 명령 예시에서 계속 사용합니다.
- ASGI: 비동기 Python 웹 서버가 따라야 하는 인터페이스 표준으로, uvicorn이 FastAPI 앱을 실행할 수 있게 해 주는 약속입니다.
- Swagger UI: FastAPI가 자동으로 제공하는 문서·테스트 페이지로, 설치 직후
/docs에서 응답을 확인할 때 등장합니다.
실습 카드
- 예상 소요 시간: 30분
- 사전 준비: Python 3.12,
uv설치, VS Code/터미널 준비- 실습 목표: uv 기반 FastAPI 프로젝트를 만들고 개발 서버를 띄운다
이 글에서 할 것
uv(Python 프로젝트 초기화·실행을 도와주는 경량 패키지 매니저) 기반으로 FastAPI 프로젝트 시작하기- 가장 간단한 API 파일 만들기
- 브라우저에서 응답과 문서 페이지 확인하기
준비
uv가 설치되어 있다고 가정하고 프로젝트 폴더를 만듭니다.
uv init my-fastapi-app
cd my-fastapi-app
패키지 설치
uv add fastapi --extra standard
이렇게 하면 FastAPI와 개발 서버 실행에 필요한 구성까지 함께 잡을 수 있습니다.
uvicorn은 무슨 역할을 하나
여기서 가장 먼저 분명히 해야 할 점이 있습니다.
FastAPI: API를 어떻게 정의할지 적는 프레임워크uvicorn: 그 FastAPI 앱을 실제 HTTP 서버로 실행하는 ASGI 서버
즉, FastAPI는 "규칙과 구조"를 제공하고, uvicorn은 "요청을 받아 앱을 실행하고 응답을 돌려주는 실행기" 역할을 합니다.
여기서 ASGI는 Python 비동기 웹 인터페이스 표준 정도로 이해하면 충분합니다. 처음에는 "여러 요청을 처리하는 Python 웹 서버가 따라야 하는 약속"이라고 생각해도 됩니다.
브라우저에서 요청이 들어오면 흐름은 대략 이렇게 볼 수 있습니다.
브라우저 -> uvicorn -> FastAPI 앱 -> 응답(JSON)
처음 보는 용어가 많다면 아래 그림처럼 단순하게 이해해도 충분합니다.
main.py 안에 app = FastAPI()만 있다고 해서 바로 웹 서버가 되는 것은 아닙니다. 그 앱 객체를 읽어 와서 포트를 열고, 요청을 받고, 응답을 보내는 서버가 필요한데 그 역할을 하는 것이 uvicorn입니다.
이번 글에서는 uv run fastapi dev main.py를 쓰지만, 이 명령도 내부적으로는 uvicorn 기반 개발 서버를 실행합니다. 그래서 로그에 Uvicorn running on ...가 보이는 것입니다.
첫 번째 앱 만들기
main.py 파일을 만들고 아래 코드를 작성합니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello FastAPI"}
@app.get("/items")
def read_items():
return ["pencil", "eraser", "notebook"]
코드 흐름은 단순합니다.
app = FastAPI()로 앱 생성@app.get(...)으로 경로 등록- 함수가 반환한 값이 JSON 응답이 됨
개발 서버 실행
uv run fastapi dev main.py
의미는 다음과 같습니다.
uv run: 프로젝트 환경에서 명령 실행fastapi dev: FastAPI 개발 서버 실행, 내부적으로는uvicorn사용main.py: 앱이 들어 있는 파일 지정
정상 실행되면 대체로 이런 메시지가 보입니다.
INFO: Uvicorn running on http://127.0.0.1:8000
브라우저에서 확인하기
기본 응답 보기
브라우저에서 http://127.0.0.1:8000/로 접속하면 아래와 비슷한 JSON이 보입니다.
{"message":"Hello FastAPI"}
자동 문서 보기
FastAPI의 재미있는 점은 문서 페이지가 바로 생성된다는 것입니다.
http://127.0.0.1:8000/docshttp://127.0.0.1:8000/redoc
특히 /docs에서는 버튼을 눌러 직접 요청도 보내볼 수 있습니다.
💬 댓글
이 글에 대한 의견을 남겨주세요