시작에 앞서
해당 내용은 <가장 빠른 풀스택을 위한 Flask & FastAPI>, Dave Lee 지음. BJ Public 출판.
내용을 토대로 작성되었습니다. 보다 자세한 사항은 해당 교재를 참고하시기 바랍니다.
이전 내용
[파이썬] FastAPI - 응답 모델
시작에 앞서해당 내용은 , Dave Lee 지음. BJ Public 출판.내용을 토대로 작성되었습니다. 보다 자세한 사항은 해당 교재를 참고하시기 바랍니다.이전 내용 [파이썬] FastAPI - Pydantic (2)시작에 앞서해당
puppy-foot-it.tistory.com
FastAPI 응답 클래스
FastAPI에서 응답 클래스는 서버가 클라이언트에게 반환되는 HTTP 응답의 종류를 정의한다. 이를 통해 개발자는 반환되는 데이터의 형식을 제어하고, 특정 HTTP 응답의 동작을 세밀하게 조정할 수 있다.
[주요 응답 클래스 리스트]
- JSONResponse: 클라이언트에게 JSON 형식의 데이터를 반환한다. 이 클래스는 파이썬의 딕셔너리나 Pydantic 모델을 JSON 문자열로 변환하여 응답 바디에 담아 전송한다.
- HTMLResponse: 클라이언트에게 HTML 형식의 데이터를 반환한다. 주로 웹페이지의 내용을 반환할 때 사용한다.
- PlainTextResponse: 클라이언트에게 단순 텍스트 형식의 응답을 반환한다. 이는 로깅, 간단한 메시지 전달 등에 적합하다.
- RedirectResponse: 이 응답 클래스는 클라이언트를 지정된 다른 URL 로 리디렉션하는 HTTP 응답을 생성한다. 이는 사용자를 다른 페이지로 유도할 때 유용하다.
◆ JSONResponse 예제 코드
from fastapi import FastAPI
from fastapi.responss import JSONResponse
app = FastAPI()
# JSONResponse 를 response_class로 사용하여 경로 연산 정의
# 이 경로 연산은 JSON 형식의 응답을 반환
@app.get("/json", response_class=JSONResponse)
def read_json():
# 딕셔너리를 반환하면, FastAPI 는 이를 JSONResponse 객체로 변환하여 응답
return {"msg": "This is JSON"}
▶ /json 경로는 JSONResponse 를 사용하여 JSON 형식으로 데이터를 반환한다. FastAPI는 이 경로 연산에 의해 반환된 딕셔너리를 자동으로 JSON 형식의 문자열로 변환하고, 클라이언트에 해당 문자열을 응답 바디로 전송한다.
- curl 명령어
curl -X GET "http://127.0.0.1:8000/json"
▶ /json 엔드포인트에 GET 요청을 보내고, 서버는 JSONResponse 클래스에 정의된 대로 JSON 형식의 응답을 반환한다.
응답은 {"msg": "This is JSON"} 과 같이 msg 키에 "This is JSON" 이라는 메시지를 포함하는 JSON 객체이다. (JSONResponse 클래스를 사용하여 정의된 응답 형식에 따라 반환된 데이터)
◆ HTMLResponse 예제 코드
from fastapi import FastAPI
from fastapi.responss import HTMLResponse
app = FastAPI()
# HTMLResponse 를 response_class로 사용하여 경로 연산 정의
# 이 경로 연산은 HTML 형식의 응답을 반환
@app.get("/html", response_class=HTMLResponse)
def read_html():
# HTML 형식의 문자열 반환
# FastAPI는 이를 HTMLResponse 객체로 변환하여 응답
return "<h1>This is HTML</h1>"
▶ /html 경로는 HTMLResponse 를 사용하여 HTML 형식으로 데이터를 반환한다. 이는 클라이언트에게 웹페이지의 일부 또는 전체 HTML 마크업을 보내고자할 때 유용하다.
- curl 명령어
curl -X GET "http://127.0.0.1:8000/html"
▶ 응답은 <h1>This is HTML</h1>과 같이 HTML 형식의 데이터를 포함한다.
◆ PlainTextResponse 예제 코드
from fastapi import FastAPI
from fastapi.responss import PlainTextResponse
app = FastAPI()
# PlainTextResponse 를 response_class로 사용하여 경로 연산 정의
# 이 경로 연산은 텍스트 형식의 응답을 반환
@app.get("/text", response_class=PlainTextResponse)
def read_text():
# 단순 텍스트 문자열 반환
# FastAPI는 이를 PlainTextResponse 객체로 변환하여 응답
return "This is Plain Text"
▶ /text 경로는 PlainTextResponse 를 사용하여 단순 텍스트 형식의 데이터를 반환한다. 이는 로깅 메시지, 단순한 안내 문구 등을 반환할 때 적합하다.
- curl 명령어
curl -X GET "http://127.0.0.1:8000/text"
▶ 응답은 "This is HTML"과 같이 단순 텍스트 형식의 데이터를 포함한다.
◆ RedirectResponse 예제 코드
from fastapi import FastAPI
from fastapi.responss import RedirectResponse, PlainTextResponse
app = FastAPI()
# RedirectResponse 를 response_class로 사용하여 경로 연산 정의
# 클라이언트를 '/text' 경로로 리다이렉션
@app.get("/redirect")
def read_redirect():
return RedirectResponse(url="/text")
# '/text' 경로는 PlainTextResponse를 반환하는 간단한 경로 연산
@app.get("/text", response_class=PlainTextResponse)
def read_text():
return "This is Plain Text"
▶ 위 코드는 세 가지 경로 연산이 정의되어 있다.
1) /redirect로 요청이 들어올 때 /text 로 리디렉션
2) /text 로 요청이 들어올 때 "This is Plain Text" 라는 응답 반환
- curl 명령어
curl -X GET "http://127.0.0.1:8000/redirect" -L
▶ crul 명령의 -L 옵션은 리디렉션을 따르도록 지시한다. 이 옵션이 없으면 curl은 리디렉션된 URL의 내용을 자동으로 가져오지 않는다.
/redirect 경로에 대한 요청은 /text 경로로 리디렉션되고, 최종적으로 "This is Plain Text" 라는 응답을 받는다.
전체적으로 이러한 설정은 FastAPI 애플리케이션에서 다양한 응답 유형과 리디렉션 로직을 효율적으로 관리할 수 있게 해준다.
다음 내용
[파이썬] FastAPI - 요청
시작에 앞서해당 내용은 , Dave Lee 지음. BJ Public 출판.내용을 토대로 작성되었습니다. 보다 자세한 사항은 해당 교재를 참고하시기 바랍니다.이전 내용 [파이썬] FastAPI - 응답 클래스시작에 앞서
puppy-foot-it.tistory.com
'[파이썬 Projects] > <파이썬 웹개발>' 카테고리의 다른 글
[파이썬] FastAPI - 예외 처리(exception handling) (0) | 2024.08.20 |
---|---|
[파이썬] FastAPI - 요청 (0) | 2024.08.20 |
[파이썬] FastAPI - 응답 모델 (0) | 2024.08.18 |
[파이썬] FastAPI - Pydantic (2) (0) | 2024.08.17 |
[파이썬] Pydantic: 데이터 검증 라이브러리 (0) | 2024.08.17 |