API 하위 호환성

API Backward Compatibility

새 서버 계약이 기존 클라이언트의 요청·응답 기대를 계속 만족하는지 살핍니다.

···
html
<div class="viz"><h3>OLD CLIENT EXPECTS id</h3><div class="row"><div class="box code" id="response">{ id, name, note? }</div><span class="arrow">→</span><div class="box" id="result">COMPATIBLE</div></div><div class="muted" id="change">optional field added</div></div>
css
.viz{width:94%;height:88%;max-width:960px;padding:clamp(10px,2vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);font:600 clamp(12px,1.35vw,16px)/1.35 var(--font-sans,system-ui,sans-serif);display:flex;flex-direction:column;gap:clamp(7px,1.8vmin,13px);overflow:hidden}.viz h3{margin:0;color:var(--accent);font:700 clamp(12px,1.35vw,16px)/1.2 var(--font-sans,system-ui,sans-serif);letter-spacing:.04em}.viz .row{display:flex;align-items:center;justify-content:center;gap:clamp(5px,1.4vmin,12px);flex:1;min-height:0}.viz .box{padding:clamp(5px,1.5vmin,12px);border:1px solid var(--line);border-radius:9px;background:var(--bg);text-align:center}.viz .muted{color:var(--muted)}.viz .accent{color:var(--accent)}.viz .code{font-family:ui-monospace,monospace}.viz .pill{padding:3px 7px;border:1px solid var(--line);border-radius:99px;white-space:nowrap}.viz .active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}.viz .arrow{color:var(--accent);font:700 18px ui-monospace,monospace}#response{min-width:54%}#result{min-width:27%;color:var(--accent);border-color:var(--accent)}#result.break{color:var(--accent-3);border-color:var(--accent-3)}
js
let broken=false;function draw(){broken=!broken;document.getElementById('response').textContent=broken?'{ name }':'{ id, name, note? }';const r=document.getElementById('result');r.textContent=broken?'BREAKING':'COMPATIBLE';r.classList.toggle('break',broken);document.getElementById('change').textContent=broken?'required id removed':'optional field added'}draw();setInterval(draw,1600)

API 하위 호환성은 새 버전을 배포해도 기존 소비자가 같은 방식으로 동작한다는 성질입니다. 선택 응답 필드를 추가하는 변경은 많은 클라이언트에서 받아들일 수 있지만, 필수 필드를 제거하거나 의미를 바꾸면 기존 코드가 실패할 수 있습니다. 실제 안전성은 소비자의 파서와 검증 규칙에 달려 있습니다.

데모에서는 선택 필드 추가가 통과하고 필수 id 제거가 실패합니다. 소비자 계약 테스트와 사용량을 확인해 변경 영향을 판단하고, 깨지는 변경은 버전 전환 계획을 세워야 합니다.

언제 쓰나

운영 중인 API의 요청·응답 스키마를 바꾸기 전에 확인합니다.

페이지로 열기 ↗