TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 웹개발>

[파이썬] FastAPI - 응답 클래스

by 기록자_Recordian 2024. 8. 19.
728x90
반응형
시작에 앞서
해당 내용은 <가장 빠른 풀스택을 위한 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

 

 

728x90
반응형