API 오류: 비밀 없이 다음 행동 안내

핵심 요약

오류 응답은 입력 수정, 인증 갱신, 권한 요청, 대기를 판단하도록 도와야 합니다. 공개 메시지와 내부 진단에는 다른 상세 수준이 필요합니다.

사람 없는 보안 서버 및 네트워크 통로
이 글의 목차

상태, 유형, 발생 사례 구분

RFC 9457은 application/problem+json을 정의합니다. 안정된 문제 유형과 사례별 설명을 쓰세요. 클라이언트가 번역된 문장을 분석해 행동을 정하게 해서는 안 됩니다. status가 있다면 실제 HTTP 상태와 일치시켜야 합니다.

상태HTTP 의미검토할 처리
400잘못된 요청수정 후 재시도.
401유효한 인증 정보 없음자격 증명과 정해진 방식을 확인.
403이해했지만 거부한 요청권한 확인. 반복해도 권한은 생기지 않음.
503서비스 일시 이용 불가작업이 허용하면 제한된 대기와 재시도.

실패 경로 예측 가능하게 만들기

  • 코드, 형식, 기대 처리를 문서화하세요. 빈 응답, 게이트웨이의 비 JSON, 연결 중단, 시간 초과도 시험하세요.
  • 서버에서 입력과 권한을 검증하세요. 예상 실패는 처리하되 미지의 장애를 숨기지 말고 업무 실패를 성공 응답으로 감추지 마세요.
  • 지원팀용 상관관계 식별자를 반환하세요. 스택, 내부 질의, 비밀번호, 토큰은 공개 응답에 넣지 마세요.

의미 있을 때만 재시도

5xx는 무한 재시도를 허용하지 않습니다. 계약, 작업 상태, 멱등성, 전체 기한을 함께 판단하세요. 민감 정보를 제거한 최소 재현으로 결함을 보고하고, 수정 후 원래 사례와 관련 접근 거부를 다시 시험하세요.

1차 자료

API 오류는 정보 유출 없이 조치를 안내해야 합니다.

HTTP 상태는 초기 범주를 제공하지만 클라이언트는 안정적인 유형과 유용한 세부 정보가 필요할 수 있습니다. RFC 9457은 일반적인 문제 구조를 설명하지만 내부 추적이나 민감한 데이터를 노출하는 것을 정당화하지는 않습니다.

  • 영구 거부, 수정 가능한 입력 및 일시적 오류를 구분합니다.
  • 각 중요한 오류에 대해 유형, 상태 및 가능한 클라이언트 조치를 문서화합니다.
  • 응답에 비밀 정보나 불필요한 전체 페이로드가 포함되지 않는지 테스트합니다.

1차 자료: IETF RFC 9457 — Problem Details for HTTP APIs. 관련 방법: 실무 가이드 읽기.

API 재시도: 전체 시간 예산 계산하기

호출 상한과 전체 기한을 정하세요.

가상의 교육용 사례로 CIE나 고객 실적이 아닙니다.

가상 모델은 호출 네 번 각 최대 250밀리초, 대기 100, 200, 400입니다. 지터, 연결, 대기열, 로컬 검증은 제외됩니다.

총 시도
41 + 3
누적 대기(ms)
700100 + 200 + 400
모델 예산(ms)
17004 × 250 + 700
순서 분해
단계최대 호출(ms)다음 대기(ms)
시도 1250100
시도 2250200
시도 3250400
시도 42500
합계1000700
모델 시간(ms)
  • 호출 시간1,000
  • 누적 대기700
  • 전체 기한(ms)1,500

결론 전 확인

  1. 1,000 + 700 = 1,700은 기한 1,500밀리초를 넘습니다.
  2. 전체 기한을 전달하고 중복 효과를 막으세요. 시간 초과는 원격 취소를 입증하지 않습니다.

재시도 시간 예산 계산

n × T + W × (2^(n−1) − 1)

관련 방법: 실무 가이드 읽기.

API 오류: 유형, 상태 및 증거

이 언어판의 상세 참고 설명은 영어로 제공됩니다.

Handle an error without parsing its sentence

An API client may receive a translated title, missing member or unfamiliar extension. Preserve decisions based on the documented type and HTTP status, then connect a safe action to the context.

  • Compare received status and JSON status without silently replacing either.
  • Test absent type, string status instead of a number, and an unknown extension.
  • Separate person-facing text, business code and occurrence reference.

Explore problem types and eight fictional responses →

IETF · M. Nottingham, E. Wilde, S. Dalal · RFC 9457 · July 2023 · obsoletes RFC 7807 · §3.1, §3.2, §4.2, §5