REST 자원 모델

REST Resource Model

URI로 자원을 가리키고 HTTP 메서드로 조회·생성·수정을 표현합니다.

···
html
<div class="viz"><h3>RESOURCE /orders/42</h3><div class="row"><span class="box code" id="method">GET</span><span class="arrow">→</span><span class="box" id="resource">order 42<br><b class="accent">read</b></span></div><div class="muted" id="reply">200 · representation</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}.row .box{min-width:30%}#resource{transition:transform .35s,background .35s}#resource.bump{transform:scale(1.08);background:color-mix(in srgb,var(--accent) 15%,var(--surface))}
js
const steps=[['GET','read','200 · representation'],['PATCH','changed','200 · updated'],['DELETE','removed','204 · no content']];let i=0;function draw(){const [method,state,reply]=steps[i];document.getElementById('method').textContent=method;document.querySelector('#resource b').textContent=state;document.getElementById('reply').textContent=reply;const box=document.getElementById('resource');box.classList.remove('bump');void box.offsetWidth;box.classList.add('bump');i=(i+1)%steps.length}draw();setInterval(draw,1400)

REST 스타일 API에서는 /orders/42 같은 URI가 주문 자원을 가리킵니다. GET은 표현을 읽고, POST는 컬렉션에 새 자원을 만들며, PATCH는 지정한 변경을 적용합니다. 클라이언트는 동사 이름을 URI마다 새로 외우지 않아도 됩니다.

데모는 같은 자원 카드에 메서드를 차례로 적용해 결과 상태가 달라지는 모습을 보여줍니다. 메서드 의미와 응답 코드는 계약에 명시하고, 서버 내부 구현을 URI 구조에 그대로 노출하지 않는 편이 좋습니다.

언제 쓰나

HTTP 자원 중심 API의 경로와 메서드를 일관되게 설계할 때 씁니다.

페이지로 열기 ↗