89 lines
8.3 KiB
Markdown
89 lines
8.3 KiB
Markdown
---
|
|
title: "RFC 9457 — Problem Details for HTTP APIs (IETF Standards Track, July 2023)"
|
|
source_type: official-doc
|
|
url: https://www.rfc-editor.org/rfc/rfc9457.html
|
|
archive_url:
|
|
vendor: IETF / M. Nottingham, E. Wilde, S. Dalal
|
|
related_branches: [feature-contract-registry-governance]
|
|
related_projects: [ca-skeleton]
|
|
tags: [official-doc, ca-skeleton, api-design, ietf, api-contract]
|
|
created: 2026-06-15
|
|
---
|
|
|
|
# RFC 9457 — Problem Details for HTTP APIs (IETF Standards Track, July 2023)
|
|
|
|
> Layer: `raw/` — 외부 자료(공식 문서 / 표준 사양)의 **원문 발췌·출처 기록**.
|
|
> 검증된 요약은 `/ingest` 후 `wiki/concepts/`에 별도 작성. 원본은 raw에 영구 보관.
|
|
|
|
## Parent / 활용 branch (필수, 최소 1개+)
|
|
|
|
| Branch | 이 자료가 정당화하는 결정 |
|
|
|---|---|
|
|
| [[raw/branch-notes/feature-contract-registry-governance]] | D5: 외부 platform 표준(RFC 7807→9457)을 사용하는 경우에도 skeleton registry 에 mapping/version row 를 남겨야 함 — RFC 9457 이 RFC 7807 을 obsolete 하고 error envelope shape 을 변경한다는 IETF 공식 증거 |
|
|
|
|
## 출처 / Source
|
|
|
|
- 원본 URL: https://www.rfc-editor.org/rfc/rfc9457.html
|
|
- 아카이브 URL: (미제공)
|
|
- 저자 / 조직: M. Nottingham, E. Wilde, S. Dalal — IETF Standards Track
|
|
- 발행일: July 2023
|
|
- 마지막 확인일: 2026-06-15
|
|
|
|
## 왜 저장했는지 / Why archived
|
|
|
|
RFC 9457 은 RFC 7807 을 obsolete 하고 error envelope 의 외부 표준이 버전 관리된다는 사실을 공식으로 증명한다. `feature-contract-registry-governance` 브랜치의 D5 결정 — "외부 platform 표준을 쓰는 경우에도 skeleton registry 에 mapping row 를 남김" — 이 UNSUPPORTED_DECISION 으로 표시된 것을 RFC 9457 원문 인용으로 뒷받침하기 위해 보관.
|
|
|
|
## 핵심 인용 / Key quotes (verbatim, 3~5문장)
|
|
|
|
> [Abstract] "This document obsoletes RFC 7807."
|
|
|
|
> [§3.1.1 — line 250] "Consumers MUST use the \"type\" URI (after resolution, if necessary) as the problem type's primary identifier."
|
|
|
|
> [§3 — line 378] "Clients consuming problem details MUST ignore any such extensions that they don't recognize; this allows problem types to evolve and include additional information in the future."
|
|
|
|
> [§4.2 — line 469] "This specification defines the \"HTTP Problem Types\" registry for common, widely used problem type URIs, to promote reuse."
|
|
|
|
> [Appendix D — line 808] "Section 4.2 introduces a registry of common problem type URIs"
|
|
|
|
## Claims Extracted / 추출된 주장
|
|
|
|
> 이 자료가 **직접 말하는 것만** claim 으로 분리한다. 내 프로젝트에 적용한 결론은 여기 쓰지 않는다.
|
|
|
|
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
|
|---|---|---|---|---|---|
|
|
| RFC9457-C1 | RFC 9457 은 RFC 7807 을 공식 폐지(obsolete)하며 HTTP API error response 의 외부 표준이 버전 관리된다 | [Abstract] "This document obsoletes RFC 7807." | `official-standard` | IETF Standards Track 을 따르는 모든 HTTP API error response 설계 | RFC 7807 → 9457 외 에도 추가 개정이 없을 것이라는 보장 없음; ca-tmpl 의 기존 RFC 7807 기반 error 코드가 자동으로 9457 호환이 됨을 증명하지 않음 |
|
|
| RFC9457-C2 | 소비자(consumer)는 반드시 `type` URI 를 problem type 의 **기본 식별자(primary identifier)**로 사용해야 한다 | [§3.1.1] "Consumers MUST use the \"type\" URI (after resolution, if necessary) as the problem type's primary identifier." | `official-standard` | RFC 9457 을 준수하는 모든 HTTP API 클라이언트 및 서버 구현 | server 측의 type URI 선택 방식(resolvable vs non-resolvable)을 규정하지 않음; 특정 프레임워크(Spring, etc.)의 기본 error 응답이 이 rule 을 준수하는지 증명하지 않음 |
|
|
| RFC9457-C3 | 소비자는 인식하지 못하는 extension member 를 반드시 무시해야 한다(forward-compatibility 규칙) | [§3] "Clients consuming problem details MUST ignore any such extensions that they don't recognize; this allows problem types to evolve and include additional information in the future." | `official-standard` | RFC 9457 을 준수하는 클라이언트 구현체; extension member 를 추가하는 server 설계 | server 측이 어떤 extension 을 추가해도 된다는 것을 무한정 허용하지 않음; IANA registry 에 없는 extension 의 의미론적 안전성은 보장하지 않음 |
|
|
| RFC9457-C4 | IETF 는 RFC 9457 과 함께 "HTTP Problem Types" IANA registry 를 신설했다 | [§4.2] "This specification defines the \"HTTP Problem Types\" registry for common, widely used problem type URIs, to promote reuse." | `official-standard` | HTTP API 의 error type URI 재사용을 원하는 모든 구현자 | registry 등록이 의무(MUST)임을 규정하지 않음; vendor-specific / application-specific / deployment-specific 값은 등록 불가(§4.2 본문) |
|
|
| RFC9457-C5 | RFC 9457 이 RFC 7807 대비 도입한 3가지 변경은 (1) common problem type URI 의 registry 신설, (2) 다수 문제(multiple problems) 처리 방식 명확화, (3) 역참조 불가 type URI 에 대한 안내 추가다 | [Appendix D] "Section 4.2 introduces a registry of common problem type URIs" [...] "Section 3 clarifies how multiple problems should be treated" [...] "Section 3.1.1 provides guidance for using type URIs that cannot be dereferenced" | `official-standard` | RFC 7807 → 9457 마이그레이션을 고려하는 API 설계자 | error envelope 의 필드 추가·삭제가 없었음을 의미하지 않음(type/status/title/detail/instance 5 멤버는 유지되지만 semantic 변경 가능); 특정 언어/프레임워크 구현체의 migration 가이드를 제공하지 않음 |
|
|
|
|
## Usage Boundaries / 적용 경계
|
|
|
|
- 이 자료가 직접 증명하는 것:
|
|
- `RFC9457-C1`: HTTP API error response 의 외부 표준이 개정될 수 있으며 RFC 7807 은 이미 obsolete — skeleton registry 에 version/mapping row 가 필요한 이유
|
|
- `RFC9457-C2`: error envelope 의 `type` URI 가 primary identifier 이며 소비자는 이것으로 problem type 을 식별해야 함
|
|
- `RFC9457-C3`: extension member 를 추가해도 forward-compatible 하게 설계할 수 있음 — registry 에 새 column 추가 시 소비자 영향 최소화 가능
|
|
- `RFC9457-C4`: 표준 error type URI 재사용을 위한 IANA registry 가 존재함
|
|
- `RFC9457-C5`: RFC 7807 → 9457 의 3가지 구체적 변경 사항
|
|
- 이 자료가 증명하지 않는 것:
|
|
- RFC 9457 이 RFC 7807 과 **필드 레벨에서** 하위 호환임을 보장하지 않음 — migration 검증은 별도 필요
|
|
- Spring Boot / Keycloak 등 특정 구현체가 RFC 9457 을 자동으로 준수하는지 증명하지 않음
|
|
- ca-tmpl 의 현재 error response 가 RFC 9457 compliant 한지 증명하지 않음
|
|
- registry 에 외부 표준 mapping row 를 **어떤 schema 로** 추가해야 하는지 안내하지 않음 (D4 UNSUPPORTED_DECISION 영역)
|
|
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
|
|
- ca-tmpl 의 error response envelope 이 RFC 9457 의 `type`/`status`/`title`/`detail`/`instance` 구조를 따르는지 코드 검증
|
|
- Spring Boot `ProblemDetail` (Spring 6+) 의 RFC 9457 준수 여부 공식 문서 확인 (별도 raw 자료 필요)
|
|
- registry 의 `compatibility_impact` column 이 RFC 9457 obsolete 처리를 어떻게 반영할지 결정 (D4 UNSUPPORTED_DECISION 범위)
|
|
|
|
## 메모 / Notes
|
|
|
|
- RFC 9457 의 IANA "HTTP Problem Types" registry URL: https://iana.org/assignments/http-problem-types
|
|
- Appendix D 의 3가지 변경 중 "(2) multiple problems" 는 §3 에서 단일 response 에 여러 problem 을 담는 방법을 안내 — ca-tmpl 의 validation error 처리(복수 field 오류 시 어떻게 encapsulate 할지)에 직접 관련
|
|
- `RFC9457-C3`(forward-compatibility MUST ignore) 는 ca-tmpl registry 의 extension column 추가 시 소비자 영향을 제한하는 근거로 활용 가능 — 단 UNSUPPORTED_IMPL_DECISION 없이 직접 결론 내리지 말 것
|
|
|
|
## Related / 관련
|
|
|
|
- 같은 주제 다른 official-doc: [[raw/official-docs/opentelemetry-versioning-stability-spec]] — 외부 표준 versioning 일반 패턴
|
|
- 이 자료를 인용한 branch-note: [[raw/branch-notes/feature-contract-registry-governance]] (D5)
|
|
- wiki 요약 (생성 시): `[[wiki/concepts/rfc9457-problem-details]]` (미생성)
|