스키마 검증

Schema Validation

입력 데이터의 타입·필수 필드·값 범위를 계약과 대조해 잘못된 요청을 경계에서 막습니다.

···
html
<div class="viz"><h3>REQUEST SCHEMA</h3><div class="row"><div class="box code" id="input">quantity: 2</div><span class="arrow">→</span><div class="box">quantity<br>number ≥ 1</div><span class="arrow">→</span><div class="box" id="out">PASS</div></div><div class="muted" id="why">valid field</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}#out{min-width:18%;border-color:var(--accent)}#out.bad{border-color:var(--accent-3);color:var(--accent-3)}
js
let invalid=false;function draw(){invalid=!invalid;document.getElementById('input').textContent=invalid?'quantity: "two"':'quantity: 2';const out=document.getElementById('out');out.textContent=invalid?'ERROR':'PASS';out.classList.toggle('bad',invalid);document.getElementById('why').textContent=invalid?'quantity must be a number':'valid field'}draw();setInterval(draw,1600)

스키마 검증은 요청 본문을 선언된 형태와 비교합니다. 필수 필드가 빠졌거나 타입·범위를 벗어난 값이 들어오면 비즈니스 로직으로 보내기 전에 오류를 돌려줍니다. 클라이언트의 실수를 일찍 찾고 서버 내부 가정을 지키는 경계가 됩니다.

데모는 같은 주문 입력에서 quantity가 숫자일 때 통과하고 문자열일 때 필드 오류로 돌아가는 과정을 보여줍니다. 검증 메시지는 요청자가 고칠 수 있게 구체적으로 쓰되 민감한 내부 규칙은 노출하지 않습니다.

언제 쓰나

외부 입력을 받는 모든 API 경계에서 기본 방어선으로 적용합니다.

페이지로 열기 ↗