FastAPI 교재 · 입문 1편 · 시리즈 시작

FastAPI 입문 — 파이썬으로 빠른 API 서버 만들기

타입힌트만 적으면 입력 검증과 API 문서가 공짜로 따라온다. 2018년에 나와 파이썬 백엔드의 표준이 된 프레임워크.

파이썬 코드가 빠른 API 엔드포인트로 흐르고 자동 문서가 생성되는 FastAPI 컨셉 아이소메트릭 일러스트

파이썬 문법을 어느 정도 익히면 다음 질문이 따라온다 — "이걸로 서버는 어떻게 만들지?" 프론트엔드 화면이 데이터를 받아오는 그 API, 모바일 앱 뒤에서 도는 그 서버를 파이썬으로 짤 때 요즘 가장 먼저 손이 가는 도구가 FastAPI 다.

JetBrains 의 파이썬 개발자 설문에서 FastAPI 사용률은 2021년 14% 에서 2023년 29% 로 두 배가 됐고, 신규 프로젝트에서는 이미 Flask 를 넘어선 조사도 있다. 입문 1편은 코드를 깊게 파기 전에 좌표부터 잡는다 — FastAPI 가 정확히 뭐고, 왜 이렇게 빨리 퍼졌고, Flask·Django 와 뭐가 다른지. 그리고 마지막에 진짜 서버 하나를 띄워 본다.

1. FastAPI 는 "파이썬 웹 프레임워크" — 단, 타입을 읽는다

한 줄 정리 — FastAPI = Starlette(웹 처리) + Pydantic(데이터 검증) + 파이썬 타입힌트. 웹 요청을 받고 응답을 돌려주는 뼈대는 Starlette 가 맡고, 들어온 데이터가 올바른지 따지는 일은 Pydantic 이 맡는다. FastAPI 는 이 둘을 타입힌트 하나로 묶는 접착제다.

여기서 "프레임워크" 가 막연하면 이렇게 보면 된다. 그냥 파이썬으로 웹 서버를 짜려면 요청 파싱, URL 분기, JSON 변환, 에러 처리를 전부 직접 해야 한다. 프레임워크는 그 반복 작업을 미리 만들어 두고, 우리는 "이 주소로 오면 이 함수를 실행해" 라는 핵심만 적게 해 준다.

이름 그대로다 — Fast 는 두 가지 의미를 동시에 노린 작명이다. 하나는 실행이 빠르다(Node.js·Go 에 견줄 만한 성능), 다른 하나는 개발이 빠르다(코드량이 줄어 기능 개발 속도가 200~300% 빨라진다는 게 공식 문서의 주장). 둘 다 사실에 가깝다.

2. 왜 이렇게 빨리 퍼졌나 — 타입힌트라는 한 수

FastAPI 가 등장한 2018년, 파이썬 백엔드는 Flask 와 Django 가 양분하고 있었다. 그 사이를 비집고 들어온 무기가 파이썬 3.6 의 타입힌트 였다. 다른 프레임워크들이 타입힌트를 "있으면 좋은 주석" 정도로 봤다면, FastAPI 는 그걸 실제로 동작하는 명세로 끌어올렸다.

무슨 말이냐 — 함수 매개변수에 price: float 라고 한 줄 적으면, FastAPI 가 그 정보로 세 가지를 자동으로 해 준다. 요청에서 값을 꺼내고, 숫자가 맞는지 검증하고, 틀리면 친절한 에러 메시지를 돌려준다. 거기다 그 타입 정보로 API 문서까지 자동 생성한다. 한 번 적은 타입이 네 가지 일을 한다.

이게 왜 큰가. 기존 방식은 "이 필드는 정수" 라는 규칙을 검증 코드·문서·테스트 세 군데에 베껴 썼다. 한 곳만 고치고 나머지를 까먹으면 곧장 버그다. FastAPI 는 그 중복을 타입힌트 한 줄로 합쳤다.

3. Flask·Django 와 무엇이 다른가

"파이썬 웹은 Django 아니에요?" 라고 묻는 사람에게 가장 쉬운 비교 표.

구분FastAPIFlaskDjango
나온 해201820102005
성격API 특화 · 비동기 우선미니멀 · 자유 조립풀세트 · 관리자·ORM 내장
데이터 검증타입힌트로 자동직접 작성폼·시리얼라이저
API 문서자동 생성 (Swagger)별도 패키지별도 패키지(DRF)
비동기(async)처음부터 기본2.0+ 부분 지원3.0+ 부분 지원
잘 맞는 일REST API · 마이크로서비스 · ML 서빙작은 앱 · 프로토타입관리자 있는 대형 웹

핵심 차이를 한 문장으로 — Django 는 "다 들어 있다", Flask 는 "네가 다 골라라", FastAPI 는 "API 만들 거면 이게 제일 덜 적는다". 화면(HTML)을 잔뜩 그리는 전통적 웹사이트라면 Django 가 여전히 강하다. 하지만 프론트는 React·앱이 따로 있고 백엔드는 JSON 만 주고받는 요즘 구조에서는 FastAPI 가 가장 군더더기 없다.

4. 왜 쓰나 — 네 가지 무기

① 자동 문서 — 코드가 곧 명세

서버를 띄우면 /docs 주소에 Swagger UI 가 저절로 생긴다. 모든 엔드포인트, 필요한 입력, 응답 형태가 표로 정리되고, 브라우저에서 버튼으로 직접 테스트까지 된다. 프론트엔드 개발자에게 "문서 보내드릴게요" 대신 "이 주소 보세요" 한 마디면 끝난다.

② 자동 검증 — 잘못된 요청은 함수 앞에서 걸린다

나이 자리에 글자가 들어오면, 함수 본문이 실행되기도 전에 FastAPI 가 422 에러와 "여기가 틀렸다" 는 메시지를 돌려준다. 검증 코드를 함수마다 쓰던 일이 사라진다.

③ 빠른 성능 — 비동기가 기본

FastAPI 는 ASGI 와 async 를 처음부터 끌어안았다. DB·외부 API 응답을 기다리는 동안 다른 요청을 처리해서, I/O 가 많은 서비스에서 동기식 Flask 보다 처리량이 크게 앞선다. Netflix·Uber·Microsoft 가 내부 서비스에 FastAPI 를 쓴다고 공개했다.

④ ML·AI 서빙의 사실상 표준

학습한 머신러닝 모델을 API 로 감싸 서비스할 때 FastAPI 가 1순위다. 파이썬으로 모델을 짰으니 같은 언어로 서빙하고, 입력 검증·문서가 공짜로 붙는다. 요즘 LLM 래퍼 서버도 대부분 FastAPI 위에 올라간다.

현실 — FastAPI 가 덜 어울리는 곳 — 관리자 페이지·로그인·게시판이 통째로 필요한 "화면 많은 웹사이트" 라면 Django 의 내장 관리자와 ORM 이 시간을 더 아껴 준다. JSON 주고받는 API 서버면 FastAPI, 화면까지 다 그리는 웹이면 Django 가 단순한 기준이다.

5. 설치하고 첫 서버 띄우기

이론은 여기까지. 진짜 서버를 하나 띄워 본다. 파이썬 3.8 이상이 깔려 있다고 보고(2편에서 가상환경부터 제대로 다룬다), 설치는 한 줄이다.

$ pip install "fastapi[standard]"

[standard] 를 붙이면 개발에 필요한 서버(uvicorn)와 부가 도구가 함께 깔린다. 이제 main.py 파일을 만들고 딱 다섯 줄을 적는다.

# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "안녕, FastAPI!"}

한 줄씩 보면 — app = FastAPI() 로 앱을 만들고, @app.get("/")"누가 첫 페이지(/)를 GET 으로 요청하면" 이라는 뜻이며, 바로 아래 함수가 그때 실행된다. 돌려준 파이썬 딕셔너리는 FastAPI 가 알아서 JSON 으로 바꿔 보낸다. 실행은 이렇게.

$ fastapi dev main.py Serving at http://127.0.0.1:8000 API docs at http://127.0.0.1:8000/docs

브라우저에서 http://127.0.0.1:8000 을 열면 {"message":"안녕, FastAPI!"} 가 보인다. 그리고 진짜 마법은 http://127.0.0.1:8000/docs — 방금 만든 엔드포인트가 대화형 문서로 이미 정리돼 있다. 우리는 문서를 한 글자도 안 적었다.

요약 — FastAPI 좌표

핵심을 한 번 더. FastAPI 는 Starlette 와 Pydantic 을 타입힌트로 묶은 파이썬 API 프레임워크다. 타입힌트 한 줄이 값 추출·검증·문서·에러 처리를 동시에 해결하고, 비동기가 기본이라 빠르며, ML 서빙의 표준이 됐다. JSON 을 주고받는 API 서버라면 가장 적게 적고 가장 빨리 만든다. 2편에서는 가상환경을 만들고 경로·쿼리 매개변수로 입력을 받는 API 를 짠다.

다음 편 예고 — 첫 API: 경로와 쿼리 매개변수

주소에 값을 실어 보내는 두 가지 방법, 경로 매개변수와 쿼리 매개변수를 타입힌트로 받아 본다.

© 2026 주나이테크(주) @JUNAITECH