728x90
반응형

응답 모델을 명시한 것처럼, 모든 경로 동작에 매개변수 status_code 를 사용하여 응답에 사용되는 HTTP 상태 코드를 선언할 수 있습니다:

 

  • @app.get()
  • @app.post()
  • @app.put()
  • @app.delete()
  • 기타 등등.

 

 

참고

status_code 는 모든 매개변수 및 바디와 같이, 경로 동작 함수가 아닌 "데코레이터" 메서드 ( get , post , 기타 등등) 의 매개변수인 것을 잊지마시기 바랍니다. 

 

status_code 는 HTTP 상태 코드가 담겨 있는 숫자를 전달 받는 매개변수입니다.

 

정보

status_code 는 대안책으로 파이썬의 http.HTTPStatus 와 같은, IntEnum 을 전달 받을 수 있습니다.

 

이것은:

 

  • 응답 속에 상태 코드를 포함하여 반환합니다.
  • OpenAPI 스키마 (그리고, 사용자 인터페이스) 에 문서화합니다.

 

 

참고

(다음 섹션에서 살펴 볼) 몇몇의 응답 코드는 응답이 바디를 갖고 있지 않다는 걸 지시합니다.

FastAPI는 이를 알고, OpenAPI 문서에 응답 바디가 없다는 문장을 생성합니다.

 

HTTP 상태 코드

참고

이미 HTTP 상태 코드가 무엇인지 알고 있다면, 다음 섹션으로 넘어가시기 바랍니다.

 

HTTP에는, 응답의 일부분으로 세 자리 숫자형 상태 코드를 전송해야 합니다.

 

이 상태 코드들은 인지할 수 있는 연관된 이름이 있지만, 중요한 건 숫자입니다.

 

짧게 설명하자면 아래와 같습니다:

 

  • 100 이상은 "정보"와 연관되어 있습니다. 직접 사용하는 경우는 거의 없습니다. 이러한 상태 코드가 있는 응답은 바디를 가질 수 없습니다.
  • 200 이상은 "성공"과 연관된 응답입니다. 이것들은 가장 많이 사용하는 것들 중 하나입니다.
    • 200 은 기본 상태 코드로, 모든 것이 "좋다(OK)"라는 의미입니다.
    • 다른 예시인 201 은, "생성됨(Created)"을 의미합니다. 이것은 보통 데이터베이스에 새로운 레코드를 생성한 이후 사용됩니다.
    • 특별한 경우인 204 는, "콘텐츠 없음(No Content)"을 의미합니다. 이 응답은 클라이언트로 반환할 콘텐츠가 없을 때 주로 사용하며, 그래서 응답에 바디가 반드시 없어야 합니다.
  • 300 이상은 "리다이렉션"과 연관되어 있습니다. 이 상태 코드들을 사용한 응답은, 무조건 바디를 갖고 있어야 하는, "수정되지 않음(Not Modified)"을 의미하는, 304 를 제외하고는, 바디를 갖고 있거나 갖고 있지 않습니다.
  • 400 이상은 "클라이언트 오류(Client Error)"와 연관된 응답입니다. 아마도 가장 많이 사용할 두 번째 유형입니다.
    • 404 는, "찾지 못함(Not Found)" 응답을 의미합니다.
    • 클라이언트에서 발생한 일반적인 오류에 대해서는, 단순히 400 을 사용할 수 있습니다.
  • 500 이상은 서버 오류와 연관되어 있습니다. 거의 직접 사용할 일이 없습니다. 만약 애플리케이션 코드, 또는 서버 일부분에 어떤 문제점이 발생했다면, 이 상태 코드들 중 하나를 자동으로 반환합니다.

 



각각의 상태 코드와 어떤 코드가 무엇을 위해 사용되는지 알고 싶다면, HTTP 상태 코드에 관한 MDN 문서를 확인하시기 바랍니다.

 

 

이름을 기억하기 위한 지름길

이전 예시를 다시 한 번 살펴봅시다:

 

 

201 은 "생성됨(Created)"을 위한 상태 코드입니다.

 

그러나 각각의 코드가 어떤 의미인지 외울 필요는 없습니다.

 

fastapi.status 로부터 편리한 변수를 사용할 수 있기 때문입니다.

 

 

그것들은 단지 편의성을 위해, 동일한 숫자를 가지고 있지만, 이를 통해 편집기의 자동 완성 기능을 사용하여 찾을 수 있게 됩니다:

 

 

 

기술적 세부사항

물론 from starlette import status 를 사용할 수 있습니다.

FastAPI는 개발자의 편의성을 위해 starlette.status 와 동일한 fastapi.status 를 제공합니다. 그러나 이것은 Starlette으로부터 직접 제공됩니다.

 

 

기본 값 변경

이후에, 숙련된 사용자 가이드에서, 여기서 선언한 기본 값과 다른 상태 코드를 반환하는 방법을 볼 수 있습니다.

 


원문

https://fastapi.tiangolo.com/tutorial/response-status-code/

 

Response Status Code - FastAPI

Response Status Code The same way you can specify a response model, you can also declare the HTTP status code used for the response with the parameter status_code in any of the path operations: @app.get() @app.post() @app.put() @app.delete() etc. from fast

fastapi.tiangolo.com

 

728x90
반응형

'FastAPI > Tutorial - User Guide' 카테고리의 다른 글

[ FastAPI ] 요청 파일  (0) 2021.09.27
[ FastAPI ] 폼 데이터  (0) 2021.09.25
[ FastAPI ] 추가 모델  (0) 2021.09.20
[ FastAPI ] 응답 모델  (0) 2021.09.20
[ FastAPI ] 헤더 매개변수  (0) 2021.09.20