색인
BadRequest
(메시지)BadRequest.FieldViolation
(메시지)Code
(열거형)Status
(메시지)
BadRequest
클라이언트 요청의 위반사항을 설명합니다. 이 오류 유형은 요청의 구문 측면에 집중합니다.
필드 | |
---|---|
field_violations[] |
클라이언트 요청의 모든 위반사항을 설명합니다. |
FieldViolation
단일 잘못된 요청 필드를 설명하는 데 사용되는 메시지 유형입니다.
필드 | |
---|---|
field |
요청 본문의 필드로 연결되는 경로입니다. 값은 프로토콜 버퍼 필드를 식별하는 점으로 구분된 식별자 시퀀스입니다. 한 가지 예를 살펴보겠습니다.
이 예시에서는 proto
JSON에서는 동일한 값이 다음과 같이 표현됩니다.
|
description |
요청 요소가 잘못된 이유에 대한 설명입니다. |
코드
gRPC API의 표준 오류 코드입니다.
여러 오류 코드가 적용될 수 있는 경우도 있습니다. 서비스는 적용되는 오류 코드 중 가장 구체적인 코드를 반환해야 합니다. 예를 들어 두 코드가 모두 적용되는 경우 FAILED_PRECONDITION
보다는 OUT_OF_RANGE
를 사용하세요. 마찬가지로 FAILED_PRECONDITION
보다는 NOT_FOUND
또는 ALREADY_EXISTS
를 사용해야 합니다.
열거형 | |
---|---|
OK |
오류 아님, 성공 시 반환 HTTP 매핑: 200 OK |
CANCELLED |
작업이 취소되었습니다. 대개 호출자에 의해 취소됩니다. HTTP 매핑: 499 클라이언트에서 닫은 요청 |
UNKNOWN |
알 수 없는 오류입니다. 예를 들어 다른 주소 공간에서 수신된 HTTP 매핑: 500 내부 서버 오류 |
INVALID_ARGUMENT |
클라이언트에서 잘못된 인수를 지정했습니다. 이는 HTTP 매핑: 400 잘못된 요청 |
DEADLINE_EXCEEDED |
작업을 완료하기 전에 기한이 지났습니다. 작업에서 시스템의 상태를 변경하는 경우 작업이 정상적으로 완료되었어도 이 오류가 반환될 수 있습니다. 예를 들어 서버의 성공 응답이 오래 지연되어 기한이 지났을 수 있습니다. HTTP 매핑: 504 게이트웨이 시간 초과 |
NOT_FOUND |
요청한 일부 항목(예: 파일 또는 디렉터리)을 찾을 수 없습니다. 서버 개발자 참고사항: 단계적 기능 출시, 잠정적 허용 목록 등으로 인해 전체 사용자 클래스에게 요청이 거부된 경우에는 HTTP 매핑: 404 찾을 수 없음 |
ALREADY_EXISTS |
클라이언트에서 만들려고 시도한 항목(예: 파일 또는 디렉토리)이 이미 존재합니다. HTTP 매핑: 409 충돌 |
PERMISSION_DENIED |
호출자에 지정한 작업을 실행할 권한이 없습니다. 일부 리소스가 소진되었기 때문에 거부된 경우에는 HTTP 매핑: 403 금지됨 |
UNAUTHENTICATED |
요청에 작업과 관련된 올바른 사용자 인증 정보가 없습니다. HTTP 매핑: 401 승인되지 않음 |
RESOURCE_EXHAUSTED |
일부 리소스가 소진되었습니다. 사용자당 할당량이나 전체 파일 시스템의 저장용량이 부족하기 때문일 수 있습니다. HTTP 매핑: 429 요청한 횟수가 너무 많음 |
FAILED_PRECONDITION |
시스템이 작업 실행에 필요한 상태가 아니기 때문에 작업이 거부되었습니다. 예를 들어 삭제할 디렉터리가 비어 있지 않거나, 디렉터리가 아닌 항목에 rmdir 작업을 적용한 경우입니다. 서비스 구현 시 다음과 같은 가이드라인에 따라 HTTP 매핑: 400 잘못된 요청 |
ABORTED |
작업이 취소되었습니다. 대개 시퀀서 확인 실패, 트랜잭션 취소 등의 동시 실행 문제가 원인입니다.
HTTP 매핑: 409 충돌 |
OUT_OF_RANGE |
유효한 범위를 벗어나는 작업을 시도했습니다. 예를 들어 파일 끝을 지나서 탐색하거나 읽으려고 했습니다.
HTTP 매핑: 400 잘못된 요청 |
UNIMPLEMENTED |
작업이 구현되지 않았거나 이 서비스에서 지원되지 않거나 사용 설정되지 않았습니다. HTTP 매핑: 501 구현되지 않음 |
INTERNAL |
내부 오류가 발생했습니다. 내부 시스템에서 예상하는 불변 항목에 문제가 있는 경우입니다. 이 오류 코드는 심각한 오류를 위해 예약되어 있습니다. HTTP 매핑: 500 내부 서버 오류 |
UNAVAILABLE |
현재 서비스를 사용할 수 없습니다. 일시적인 상태일 가능성이 높으며, 잠시 시간을 두고 다시 시도하면 해결될 수 있습니다. 멱등성이 없는 작업을 재시도하는 것이 항상 안전한 것은 아닙니다.
HTTP 매핑: 503 사용할 수 없는 서비스 |
DATA_LOSS |
복구할 수 없는 데이터 손실이나 손상이 발생했습니다. HTTP 매핑: 500 내부 서버 오류 |
상태
Status
유형은 REST API, RPC API를 비롯하여 다양한 프로그래밍 환경에 적합한 논리적 오류 모델을 정의하며, gRPC에서 사용됩니다. 각 Status
메시지에는 오류 코드, 오류 메시지, 오류 세부정보라는 3가지 데이터가 포함됩니다.
API 설계 가이드에서 이 오류 모델과 모델 작업 방법에 대해 자세히 알아볼 수 있습니다.
필드 | |
---|---|
code |
상태 코드로, |
message |
개발자에게 정보를 제공하는 오류 메시지로, 영어로 작성되어야 합니다. 사용자에게 표시되는 모든 오류 메시지는 현지화되어 |
details[] |
오류 세부정보를 설명하는 메시지 목록입니다. API에서 사용할 일반적인 메시지 유형 집합이 있습니다. |