사용자의 API 요청 성공 또는 실패 여부를 나타낼 때는 공통 HTTP 상태 코드를 사용하려는 경우가 많습니다. 예를 들어 사용자가 존재하지 않는 항목을 가져오려고 하면 HTTP 404
상태 코드를 전송하여 ID가 entity_id
인 항목이 존재하지 않음을 알릴 수 있습니다.
다음과 같이 엔드포인트 라이브러리에서 제공되는 예외를 발생시켜서 이러한 공통 HTTP 상태 코드를 전송할 수 있습니다.
message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)
Endpoints Frameworks에서 제공되는 예외
엔드포인트 라이브러리는 특정 HTTP 상태 코드에 따라 다음과 같은 예외를 제공합니다.
예외 | 해당 HTTP 상태 코드 |
---|---|
endpoints.BadRequestException |
HTTP 400 |
endpoints.UnauthorizedException |
HTTP 401 |
endpoints.ForbiddenException |
HTTP 403 |
endpoints.NotFoundException |
HTTP 404 |
endpoints.InternalServerErrorException |
HTTP 500 |
지원되는 HTTP 상태 코드
Cloud Endpoints Frameworks에서는 API 응답에서 HTTP 상태 코드 일부가 지원됩니다. 지원되는 코드는 다음 표에 설명되어 있습니다.
HTTP 상태 코드 | 지원 |
---|---|
HTTP 2xx | API 메서드가 성공적으로 반환되면 일반적으로 Endpoints Frameworks에서 HTTP 200 이 사용됩니다.API 메서드의 응답 유형이 VoidMessage 이거나, 혹은 API 메서드의 반환 값이 None 이면 204 가 대신 설정됩니다. |
HTTP 3xx | HTTP 3xx 코드는 지원되지 않습니다. HTTP 3xx 코드를 사용하면 HTTP 404 응답이 발생합니다. |
HTTP 4xx | 다음 HTTP 4xx 코드만 지원됩니다.
404 오류로 반환됩니다.
|
HTTP 5xx | 모든 HTTP 5xx 상태 코드는 클라이언트 응답에서 HTTP 503 으로 변환됩니다. |
고유한 예외 클래스 만들기
다른 HTTP 상태 코드에 대해 다른 예외 클래스를 만들려면 endpoints.ServiceException
을 서브클래스로 만들면 됩니다. 다음 스니펫은 HTTP 409 상태 코드를 나타내는 예외 클래스 생성 방법을 보여줍니다.
import endpoints
import httplib
class ConflictException(endpoints.ServiceException):
"""Conflict exception that is mapped to a 409 response."""
http_status = httplib.CONFLICT