FastAPI Python (개발자를 위한 작동 방식)
FastAPI는 Python으로 API를 구축하기 위한 최신 고성능 웹 프레임워크입니다. 이 소프트웨어는 사용 및 학습이 간편하도록 설계되었으며, 자동 유효성 검사, 직렬화, 자동 대화형 API 문서화와 같은 강력한 기능을 제공합니다. 또한, 모든 템플릿 엔진과 호환되며 프로젝트에 필요한 모든 기본 템플릿 구성을 사용할 수 있습니다.
FastAPI 의 세부 사항, 기능 및 효과적인 사용 방법에 대해 자세히 살펴보겠습니다. 이 글 후반부에서는 Iron Software 에서 개발한 PDF 생성 Python 패키지인 IronPDF 에 대해서도 살펴보겠습니다.
FastAPI의 주요 기능
- 고성능: FastAPI는 웹 부분에 Starlette를, 데이터 부분에 Pydantic을 사용하여 Node.js 및 Go와 비교할 만한 가장 빠른 Python 프레임워크 중 하나입니다.
- 사용 편의성: 직관적으로 설계되어 문서 읽기에 소요되는 시간을 줄여줍니다. 이 프레임워크는 데이터 유효성 검사 및 직렬화를 위해 표준 Python 유형 힌트를 활용합니다.
- 자동 대화형 문서화: FastAPI는 OpenAPI 및 JSON 스키마를 사용하여 대화형 API 문서를 자동으로 생성하며, 이는 /docs(Swagger UI) 및 /redoc(ReDoc)을 통해 접근할 수 있습니다. API에 대한 모든 업데이트는 문서에 자동으로 반영됩니다.
- 에디터 지원: VS Code와 같은 에디터에서 코드 자동 완성 및 타입 검사 기능을 훌륭하게 지원하여 개발 속도를 높이고 오류를 줄여줍니다.
- 표준 기반: 이 기술은 개방형 API 표준인 OpenAPI 및 JSON Schema를 기반으로 하며, 이 표준과 완벽하게 호환됩니다.
설치
pip를 사용하여 FastAPI와 Uvicorn (ASGI 서버)을 설치할 수 있습니다.
pip install fastapi
pip install "uvicorn[standard]"pip install fastapi
pip install "uvicorn[standard]"FastAPI 애플리케이션 첫 생성하기
다음은 FastAPI를 사용하여 Python 데이터를 사용자 인터페이스를 통해 노출하는 간단한 예제입니다.
from fastapi import FastAPI
# Create a FastAPI 'app' instance
app = FastAPI()
# Root path operation
@app.get("/")
def read_root():
return {"Hello": "World"}
# Path operation for items including query parameter 'q'
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}from fastapi import FastAPI
# Create a FastAPI 'app' instance
app = FastAPI()
# Root path operation
@app.get("/")
def read_root():
return {"Hello": "World"}
# Path operation for items including query parameter 'q'
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}애플리케이션을 실행하려면 Uvicorn을 사용하십시오.
uvicorn main:app --reloaduvicorn main:app --reload이 명령은 개발 서버를 시작하고 코드 변경 시 자동으로 다시 로드합니다. 상호작용하는 API 문서에 http://127.0.0.1:8000/docs에서 액세스할 수 있습니다.
고급 기능
FastAPI는 다양한 고급 기능을 지원하므로 복잡한 애플리케이션에 적합합니다.
- 의존성 주입: FastAPI는 의존성을 깔끔하고 효율적으로 관리할 수 있는 강력한 의존성 주입 시스템을 제공합니다.
- 백그라운드 작업: 응답을 반환한 후 실행될 백그라운드 작업을 정의할 수 있습니다. 이는 이메일 전송이나 데이터 처리와 같은 작업에 유용합니다.
- 웹소켓: FastAPI는 웹소켓을 지원하여 클라이언트와 서버 간의 실시간 통신을 가능하게 합니다.
- 보안: FastAPI는 OAuth2, JWT 토큰 등을 포함한 보안 처리 도구를 제공합니다.
- 데이터베이스 통합: FastAPI는 SQLAlchemy 또는 Tortoise-ORM과 같은 라이브러리를 사용하여 데이터베이스와 쉽게 통합할 수 있습니다.
예시: CRUD API 구축
아이템 관리를 위한 간단한 CRUD(생성, 읽기, 업데이트, 삭제) API를 만들어 봅시다.
- 데이터 모델을 정의합니다.
from pydantic import BaseModel
# Define a Pydantic model for the item with default description and tax
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = Nonefrom pydantic import BaseModel
# Define a Pydantic model for the item with default description and tax
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None- FastAPI 애플리케이션을 생성합니다.
from fastapi import FastAPI, HTTPException
# Initialize 'app' instance and an empty 'items' dictionary
app = FastAPI()
items = {}
# Create operation: Add a new item
@app.post("/items/")
def create_item(item: Item):
item_id = len(items) + 1
items[item_id] = item
return item
# Read operation: Retrieve an item by 'item_id'
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
return items[item_id]
# Update operation: Replace an existing item
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
items[item_id] = item
return item
# Delete operation: Remove an item by 'item_id'
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
del items[item_id]
return {"message": "Item deleted"}from fastapi import FastAPI, HTTPException
# Initialize 'app' instance and an empty 'items' dictionary
app = FastAPI()
items = {}
# Create operation: Add a new item
@app.post("/items/")
def create_item(item: Item):
item_id = len(items) + 1
items[item_id] = item
return item
# Read operation: Retrieve an item by 'item_id'
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
return items[item_id]
# Update operation: Replace an existing item
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
items[item_id] = item
return item
# Delete operation: Remove an item by 'item_id'
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
del items[item_id]
return {"message": "Item deleted"}IronPDF 소개합니다

IronPDF 는 HTML, CSS, 이미지 및 JavaScript 사용하여 PDF를 생성, 편집 및 서명하도록 설계된 강력한 Python 라이브러리입니다. 이 제품은 낮은 메모리 사용량으로 상업용 수준의 성능을 제공합니다. 주요 특징은 다음과 같습니다.
HTML을 PDF로 변환
HTML 파일, HTML 문자열 및 URL을 PDF로 변환합니다. 예를 들어, Chrome PDF 렌더러를 사용하여 웹페이지를 PDF로 렌더링할 수 있습니다.
크로스 플랫폼 지원
.NET Core, .NET Standard, .NET Framework 등 다양한 .NET 플랫폼과 호환됩니다. 이 프로그램은 윈도우, 리눅스, macOS를 지원합니다.
편집 및 서명
속성을 설정하고, 암호 및 권한으로 보안을 강화하고, PDF에 디지털 서명을 적용하세요.
페이지 템플릿 및 설정
머리글, 바닥글, 페이지 번호 및 조정 가능한 여백을 사용하여 PDF를 사용자 지정하세요. 반응형 레이아웃과 사용자 지정 용지 크기를 지원합니다.
표준 준수
PDF/A 및 PDF/UA와 같은 PDF 표준을 준수합니다. UTF-8 문자 인코딩을 지원하며 이미지, CSS, 글꼴과 같은 자산을 처리합니다.
IronPDF 와 FastAPI를 사용하여 PDF 문서를 생성하세요
pip install fastapi
pip install IronPDFpip install fastapi
pip install IronPDFfrom fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import *
# Apply your IronPDF license key
License.LicenseKey = "key"
# Initialize 'app' instance
app = FastAPI()
# Route for simple greeting
@app.get("/")
def read_root():
return {"Hello": "IronPDF"}
# Route that reads items with path and query parameters
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
# Route for generating a PDF document
@app.get("/pdf")
async def get_pdf(greet1: str = None, greet2: str = None):
# Use ChromePdfRenderer to create PDF from HTML
renderer = ChromePdfRenderer()
content = "<h1>Document Generated using IronPDF with FastAPI GET</h1>"
content += "<p> Demonstrate PDF generation using User Inputs</p>"
content += f"<p>Greetings from: {greet1}</p>"
content += f"<p>And Greetings from: {greet2}</p>"
pdf = renderer.RenderHtmlAsPdf(content)
# Save the PDF to a file
pdf.SaveAs("fastapi.pdf")
# Create a response with the generated PDF
headers = {
"Content-Disposition": "inline; filename=sample.pdf"
}
return FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)from fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import *
# Apply your IronPDF license key
License.LicenseKey = "key"
# Initialize 'app' instance
app = FastAPI()
# Route for simple greeting
@app.get("/")
def read_root():
return {"Hello": "IronPDF"}
# Route that reads items with path and query parameters
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
# Route for generating a PDF document
@app.get("/pdf")
async def get_pdf(greet1: str = None, greet2: str = None):
# Use ChromePdfRenderer to create PDF from HTML
renderer = ChromePdfRenderer()
content = "<h1>Document Generated using IronPDF with FastAPI GET</h1>"
content += "<p> Demonstrate PDF generation using User Inputs</p>"
content += f"<p>Greetings from: {greet1}</p>"
content += f"<p>And Greetings from: {greet2}</p>"
pdf = renderer.RenderHtmlAsPdf(content)
# Save the PDF to a file
pdf.SaveAs("fastapi.pdf")
# Create a response with the generated PDF
headers = {
"Content-Disposition": "inline; filename=sample.pdf"
}
return FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)코드 설명
이 코드 조각은 IronPDF 와 FastAPI를 통합하여 사용자 입력에 따라 PDF 문서를 동적으로 생성하고 다운로드 가능한 응답으로 제공하는 방법을 보여줍니다.
라이선스 키 설정: IronPDF 라이선스 키를 적용하여 기능을 활성화합니다.
FastAPI 초기화: HTTP 요청을 처리하기 위해 FastAPI 인스턴스(
app)를 초기화합니다.기본 경로 처리기:
read_root(): 루트 URL(/)에 접근할 때 'Hello IronPDF'라는 간단한 JSON 메시지로 응답합니다.read_item():item_id경로 매개변수와 선택적인q쿼리 매개변수를 허용합니다. 다음 매개변수를 포함하는 JSON 응답을 반환합니다.
PDF 생성 경로(
/pdf):get_pdf(): 이 비동기 함수는/pdf엔드포인트에 대한 GET 요청을 처리하며,greet1및greet2라는 선택적 쿼리 매개변수를 포함합니다.- 다음을 포함하는 HTML 문자열(
content)을 구성합니다:- 문서의 출처와 목적을 나타내는 머리글.
- 사용자 입력(
greet1및greet2)을 사용하여 PDF 생성을 시연하는 단락.
- IronPDF의
ChromePdfRenderer()사용하여 HTML 내용을 PDF(pdf = renderer.RenderHtmlAsPdf(content))로 렌더링합니다. - 생성된 PDF를 'fastapi.pdf'로 저장합니다(
pdf.SaveAs("fastapi.pdf")).
- PDF 제공:
- 브라우저에서 PDF가 인라인으로 표시되도록 응답 헤더를 구성합니다(
"Content-Disposition": "inline; filename=sample.pdf"). - 적절한 미디어 타입과 함께 생성된 PDF 파일을 가리키는
FileResponse객체를 생성합니다("application/pdf"). FileResponse객체를 반환하면/pdf엔드포인트에 접근할 때 PDF 문서 다운로드가 시작됩니다.
- 브라우저에서 PDF가 인라인으로 표시되도록 응답 헤더를 구성합니다(
이 코드 조각은 IronPDF FastAPI와 원활하게 통합하여 사용자 입력에 따라 PDF 문서를 동적으로 생성하고 제공하는 방법을 보여줍니다. 이 프로그램은 HTML 콘텐츠를 PDF로 변환하는 기능을 보여주므로 HTTP를 통해 문서를 즉시 생성하고 전송해야 하는 애플리케이션에 적합합니다.
출력
아래는 API에서 생성된 Swagger 출력 결과입니다.


IronPDF 라이선스
IronPDF Python 라이선스 키를 사용하여 실행됩니다. IronPDF for Python은 사용자가 구매 전에 기능을 확인해 볼 수 있도록 무료 평가판 라이선스 키를 제공합니다.
IronPDF 패키지를 사용하기 전에 스크립트 시작 부분에 라이선스 키를 배치하십시오.
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"from ironpdf import *
# Apply your license key
License.LicenseKey = "key"결론
FastAPI는 Python으로 API를 구축하기 위한 강력하고 사용하기 쉬운 프레임워크입니다. FastAPI는 뛰어난 성능, 자동 문서화 기능, 고급 기능을 갖추고 있어 초보 개발자와 숙련된 개발자 모두에게 훌륭한 선택입니다. 간단한 API를 구축하든 복잡한 웹 애플리케이션을 구축하든, FastAPI는 성공에 필요한 도구를 제공합니다.
IronPDF 는 HTML 콘텐츠로부터 PDF 문서를 생성, 조작 및 렌더링하는 데 사용되는 강력한 Python 라이브러리입니다. 이 프로그램은 HTML을 PDF로 변환, 대화형 양식 생성, PDF 조작(병합, 분할) 및 텍스트 추출과 같은 기능을 제공합니다. 동적 PDF를 손쉽게 생성하고 다양한 Python 애플리케이션에 통합하는 데 이상적입니다.
자주 묻는 질문
Python 애플리케이션에서 HTML 콘텐츠를 PDF로 변환하는 방법은 무엇인가요?
IronPDF의 ChromePdfRenderer 사용하면 HTML, CSS 및 JavaScript 콘텐츠를 PDF 파일로 변환할 수 있습니다. 이를 통해 웹 콘텐츠에서 PDF 문서를 생성하는 Python 애플리케이션에 원활하게 통합할 수 있습니다.
FastAPI를 사용하여 API를 구축할 때의 이점은 무엇인가요?
FastAPI는 고성능, 자동 유효성 검사, 직렬화 및 대화형 API 문서화를 제공합니다. Starlette와 Pydantic을 활용하여 Node.js 및 Go와 유사한 속도와 효율성을 보장하는 동시에 OpenAPI와 같은 개방형 표준을 지원합니다.
FastAPI에서 PDF 문서를 제공하려면 어떻게 해야 하나요?
FastAPI에서 PDF 문서를 제공하려면 IronPDF를 사용하여 PDF를 생성하고 FastAPI의 FileResponse 통해 반환하면 됩니다. 이 방법을 사용하면 클라이언트 요청에 따라 PDF를 동적으로 생성하고 제공할 수 있습니다.
FastAPI가 실시간 애플리케이션에 적합한 이유는 무엇일까요?
FastAPI는 웹소켓을 지원하여 클라이언트와 서버 간의 실시간 통신을 가능하게 하므로, 즉각적인 데이터 업데이트나 실시간 상호 작용이 필요한 애플리케이션에 이상적인 선택입니다.
FastAPI는 데이터 유효성 검사 및 직렬화를 어떻게 처리하나요?
FastAPI는 Pydantic 모델과 표준 Python 유형 힌트를 사용하여 데이터 유효성 검사 및 직렬화를 처리합니다. 이를 통해 입력 데이터가 올바르게 검증되고 원하는 형식으로 변환되어 오류 발생 가능성이 줄어듭니다.
FastAPI는 어떤 보안 기능을 제공하나요?
FastAPI는 OAuth2, JWT 인증 및 의존성 주입을 포함한 강력한 보안 기능을 제공하여 개발자가 최소한의 노력으로 안전한 애플리케이션을 구축할 수 있도록 지원합니다.
IronPDF는 크로스 플랫폼 애플리케이션에서 사용할 수 있습니까?
네, IronPDF는 Windows, Linux, macOS를 지원하는 크로스 플랫폼으로 설계되었습니다. 따라서 다양한 운영 체제에서 실행되는 애플리케이션에 PDF 생성 기능을 통합하려는 개발자에게 다용도로 활용할 수 있는 선택입니다.
FastAPI는 개발자 생산성을 어떻게 향상시키나요?
FastAPI는 자동 API 문서화, 코드 완성 및 타입 검사 기능을 제공하여 개발자 생산성을 향상시킵니다. 이를 통해 방대한 수동 문서화 작업의 필요성을 줄이고 개발 과정 초기에 오류를 발견할 수 있도록 도와줍니다.










