FastAPI는 Python으로 API를 구축하기 위한 현대적인 고성능 웹 프레임워크로, 개발자가 최소한의 노력으로 강력하고 효율적인 애플리케이션을 만들 수 있도록 해줍니다. 비동기 프로그래밍을 염두에 두고 설계되어 매우 빠르고 여러 요청을 동시에 처리할 수 있습니다. FastAPI를 지원하는 주요 구성 요소로는 Uvicorn, Starlette, Swagger UI 및 Pydantic이 있습니다. 이 가이드에서는 이러한 각 구성 요소를 살펴보고 핵심 개념을 보여주는 코드 예제와 함께 FastAPI에서 구성 요소가 어떻게 결합되는지 살펴보겠습니다.
FastAPI는 두 가지 주요 기반을 기반으로 구축되었습니다.
구조에 대한 아이디어를 얻기 위해 간단한 FastAPI 앱부터 시작해 보겠습니다.
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
이것은 {"Hello": "World"}로 JSON 응답을 반환하는 단일 경로(/)가 있는 기본 FastAPI 애플리케이션입니다.
이 앱을 실행하려면 비동기 웹 애플리케이션을 제공하도록 설계된 ASGI 서버인 Uvicorn을 사용합니다.
Uvicorn은 비동기 코드 처리에 최적화된 초고속 ASGI 서버입니다. 이는 들어오는 HTTP 요청을 처리하고 이러한 요청의 수명주기를 관리하기 때문에 FastAPI 애플리케이션을 실행하는 데 필수적입니다.
Uvicorn으로 FastAPI 앱을 실행하려면 다음 명령을 사용하세요.
uvicorn main:app --reload
이 명령을 실행하면 Uvicorn이 FastAPI 앱 제공을 시작하며 http://127.0.0.1:8000에서 액세스할 수 있습니다.
FastAPI는 라우팅, 미들웨어, WebSocket 지원을 비롯한 핵심 HTTP 작업을 처리하는 경량 ASGI 프레임워크인 Starlette를 기반으로 구축되었습니다. Starlette는 FastAPI가 HTTP 요청을 관리하는 데 사용하는 하위 수준 도구를 제공하여 웹 애플리케이션 구축을 위한 안정적이고 성능이 뛰어난 기반을 만듭니다.
FastAPI는 Starlette의 라우팅 시스템을 활용하여 API 엔드포인트를 정의합니다. 예:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
이 예에서는:
Starlette를 사용하면 CORS(Cross-Origin Resource Sharing) 처리, 요청 로깅 또는 사용자 정의 인증과 같은 다양한 작업을 위해 미들웨어를 추가할 수도 있습니다.
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
Starlette의 이러한 유연성 덕분에 FastAPI는 구성 가능성이 높아 개발자가 필요에 따라 사용자 정의 미들웨어를 쉽게 추가할 수 있습니다.
FastAPI는 Swagger UI를 사용하여 대화형 API 문서를 자동으로 생성합니다. 이 문서는 기본적으로 /docs에서 제공되며 이를 통해 개발자는 브라우저에서 직접 엔드포인트를 테스트할 수 있습니다.
이 내용을 실제로 보려면 FastAPI 앱을 시작하고 http://127.0.0.1:8000/docs를 방문하세요. 모든 경로, 해당 매개변수 및 예상 응답을 나열하는 대화형 Swagger UI가 표시됩니다.
또 다른 문서 인터페이스인 ReDoc도 기본적으로 /redoc에 제공되어 API 사양에 대한 더 자세한 보기를 제공합니다.
FastAPI의 가장 강력한 측면 중 하나는 데이터 검증을 위해 Pydantic을 사용한다는 것입니다. Pydantic 모델을 사용하면 엄격한 유형 제약 조건과 자동 유효성 검사를 통해 요청 및 응답 데이터의 구조를 정의할 수 있습니다.
예제에 Pydantic 모델을 추가해 보겠습니다.
uvicorn main:app --reload
이 코드에서는:
/docs에서 Swagger UI를 사용하여 이와 같은 요청을 보내보세요.
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
FastAPI는 데이터의 유효성을 검사하고 데이터가 예상 유형과 일치하지 않으면 자동으로 오류를 반환합니다. 예를 들어 가격이 문자열(예: "20")로 제공되면 FastAPI는 자세한 유효성 검사 오류로 응답합니다.
더 많은 경로를 추가하고 지금까지 배운 모든 내용을 결합하여 앱을 확장해 보겠습니다.
from starlette.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
이 설정을 사용하면:
이 애플리케이션을 실행하려면 Uvicorn을 사용하세요.
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
http://127.0.0.1:8000/docs로 이동하여 대화형 문서를 확인하거나 cURL 또는 Postman과 같은 도구를 사용하여 다양한 엔드포인트에 요청을 보냅니다.
FastAPI는 비동기 프로그래밍의 성능 이점과 Python 유형 힌트의 단순성을 결합하여 빠르고 사용하기 쉬우며 프로덕션 애플리케이션에 적합한 프레임워크를 만듭니다. FastAPI는 Uvicorn, Starlette, Swagger UI 및 Pydantic을 통합하여 놀라울 정도로 간소화된 API 개발 접근 방식을 제공하므로 신속한 프로토타이핑 및 프로덕션 등급 애플리케이션 모두에 탁월한 선택이 됩니다.
이러한 핵심 기본 사항을 갖추었으므로 이제 FastAPI의 세계에 대해 더 깊이 알아보고 확장 가능한 고성능 애플리케이션을 구축할 수 있습니다.
위 내용은 FastAPI 기초 이해: FastAPI, Uvicorn, Starlette, Swagger UI 및 Pydantic 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!