FastAPI를 시작하려면 먼저 아래와 같은 간단한 코드를 작성합니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
위 코드를 main.py 파일에 저장합니다.
터미널에서 아래 명령어로 서버를 실행합니다.
uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
이 명령어는 uvicorn으로 main.py 파일의 app 객체를 실행하고, --reload 옵션은 코드 변경 시 서버를 자동으로 재시작하게 만듭니다.
코드를 작성하거나 복사, 편집할 때, 로컬 환경에서 실행하는 것을 강력히 권장합니다.
로컬 편집기에서 사용한다면, 모든 타입 검사와 자동완성 등 작성해야 하는 코드가 얼마나 적은지 보면서 FastAPI의 이점을 비로소 경험할 수 있습니다.
브라우저에서 http://127.0.0.1:8000에 접속하면 다음과 같은 JSON 응답을 볼 수 있습니다:
{"message": "Hello World"}
FastAPI는 자동으로 API 문서를 생성합니다.
http://127.0.0.1:8000/docs에서 API를 상호작용하면서 테스트할 수 있습니다.http://127.0.0.1:8000/redoc에서는 ReDoc을 사용한 대안 문서를 확인할 수 있습니다.FastAPI는 OpenAPI 표준을 사용하여 API의 스키마를 자동으로 생성합니다. API에 대한 모든 설명과 경로, 가능한 매개변수 등을 정의합니다.
http://127.0.0.1:8000/openapi.json에서 확인할 수 있습니다.{
"openapi": "3.0.2",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"paths": {
"/items/": {
"get": {
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
...
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
app = FastAPI()는 FastAPI 클래스의 인스턴스를 생성하는 코드입니다. 만약에 앱을 만든다면?
from fastapi import FastAPI
my_awesome_api = FastAPI()
@my_awesome_api.get("/")
async def root():
return {"message": "Hello World"}
이 코드를 main.py에 넣고 uvicorn에 아래처럼 호출
uvicorn main:my_awesome_api --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
/로 시작하는 URL의 뒷부분을 의미합니다https://example.com/items/foo
/items/foo
"경로"
- 일반적으로 "엔드포인드" 또는 "라우트"라고 불림
- API를 설계할 때 "관심사"와 "리소스"를 분리하기 위한 방법임.
@app.get("/")
async def root():
return {"message": "Hello World"}
이 코드는 "/" 경로에 대한 GET 요청을 처리하는 함수입니다.
작동(Operation)은 HTTP 메소드(GET, POST 등)를 말하며, 특정 경로에 대해 수행하는 작업을 의미합니다.
API를 설계할 때 일반적으로 특정 행동을 수행하기 위해 특정 HTTP 메소드를 사용합니다.
POST: 데이터를 생성하기 위해.
GET: 데이터를 읽기 위해.
PUT: 데이터를 수정하기 위해.
DELETE: 데이터를 삭제하기 위해.
- 경로: 는 /입니다.
- 작동: 은 get입니다.
- 함수: 는 "데코레이터" 아래에 있는 함수입니다 (@app.get("/") 아래)
async def root()는 비동기 함수로, 요청이 있을 때 실행됩니다. 일반 함수로 정의할 수도 있습니다:
@app.get("/")
def root():
return {"message": "Hello World"}
경로 작동 함수는 dict, list, str, int 등의 데이터를 반환할 수 있으며, FastAPI는 이를 자동으로 JSON으로 변환해 클라이언트에게 응답합니다.
app 인스턴스를 생성합니다.uvicorn main:app --reload 명령어로 개발 서버를 실행합니다.이 단계로 FastAPI를 쉽게 시작할 수 있습니다. FastAPI는 자동으로 API 문서를 생성하고, 효율적인 비동기 API 처리를 지원하는 강력한 프레임워크입니다.