[python] FastAPI에서 응답 데이터 포맷 설정하기

FastAPI는 Python의 웹 프레임워크로, 빠른 속도와 강력한 기능을 제공합니다. 이를 통해 JSON과 같은 다양한 데이터 포맷으로 응답을 설정할 수 있습니다. 이번 블로그 포스트에서는 FastAPI에서 응답 데이터의 포맷을 설정하는 방법을 알아보겠습니다.

기본적인 응답 포맷

FastAPI의 기본적인 응답 포맷은 JSON입니다. 따라서, FastAPI를 사용하여 데이터를 반환하면 기본적으로 JSON 형태로 응답되게 됩니다. 아래는 간단한 예시입니다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}")
async def get_user(user_id: int):
    user = {"id": user_id, "name": "John Doe", "email": "johndoe@example.com"}
    return user

위의 예시에서 get_user 함수는 JSON 형태의 사용자 데이터를 반환합니다. FastAPI는 이 데이터를 JSON으로 인코딩하여 클라이언트에게 응답으로 반환합니다.

다른 데이터 포맷 설정하기

FastAPI는 다양한 데이터 포맷을 지원합니다. 예를 들어, XML, HTML, YAML과 같은 다른 데이터 포맷을 사용할 수 있습니다.

XML 데이터 포맷 설정하기

FastAPI에서 XML 데이터 포맷을 반환하기 위해서는 fastapi.responses.XMLResponse 클래스를 사용하면 됩니다. 아래는 XML 데이터 포맷을 반환하는 예시입니다.

from fastapi import FastAPI
from fastapi.responses import XMLResponse

app = FastAPI()

@app.get("/users/{user_id}", response_class=XMLResponse)
async def get_user(user_id: int):
    user = "<user><id>{}</id><name>John Doe</name><email>johndoe@example.com</email></user>".format(user_id)
    return user

위의 예시에서 XMLResponse를 사용하여 응답 데이터의 포맷을 XML로 설정하였습니다.

HTML 데이터 포맷 설정하기

FastAPI에서 HTML 데이터 포맷을 반환하기 위해서는 fastapi.responses.HTMLResponse 클래스를 사용하면 됩니다. 아래는 HTML 데이터 포맷을 반환하는 예시입니다.

from fastapi import FastAPI
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get("/users/{user_id}", response_class=HTMLResponse)
async def get_user(user_id: int):
    user = "<h1>User: {}</h1>".format(user_id)
    return user

위의 예시에서 HTMLResponse를 사용하여 응답 데이터의 포맷을 HTML로 설정하였습니다.

YAML 데이터 포맷 설정하기

FastAPI에서 YAML 데이터 포맷을 반환하기 위해서는 fastapi.responses.PlainTextResponse 클래스를 사용하며, 컨텐트 타입을 YAML로 설정하여 반환해야 합니다.

from fastapi import FastAPI
from fastapi.responses import PlainTextResponse

app = FastAPI()

@app.get("/users/{user_id}", response_class=PlainTextResponse, content_type="application/yaml")
async def get_user(user_id: int):
    user = "id: {}\nname: John Doe\nemail: johndoe@example.com".format(user_id)
    return user

위의 예시에서 PlainTextResponse를 사용하여 응답 데이터의 포맷을 플레인 텍스트로 설정하였습니다. 컨텐트 타입을 “application/yaml”로 설정하여 YAML 형식으로 반환합니다.

마무리

FastAPI를 사용하면 다양한 데이터 포맷으로 응답을 설정할 수 있습니다. JSON, XML, HTML, YAML 등 다양한 데이터 포맷을 손쉽게 설정할 수 있으며, 이를 통해 클라이언트 요청에 맞는 적절한 데이터 포맷으로 데이터를 반환할 수 있습니다. FastAPI 문서에서 제공하는 다양한 응답 클래스를 활용하여 웹 애플리케이션을 더욱 유연하고 다양한 형태의 응답을 제공할 수 있습니다. ```