Collection Pattern
Collection pattern
rest-api์์ ๋ฆฌ์์ค๋ฅผ ํํํ๋ ๋ฐ ์์ด์ ์ค์ํ ํจํด์ด๋ค. ํํ ๋งํ๋ restfulํ๋ค๋ ๊ฒ์ ๊ฐ๋ฅด๋ ์์ ์ค์ ํ๋๋ก COllection Pattern์ ์ผ๋ง๋ ์ค์ํ๋๊ฐ๋ก ํ๋จํ ์ ๋์ด๋ค. Collection์ด๋ผ๋ ๋จ์ด๋ก ์ถ์ ํด๋ณด๋ฉด ์ผ๋จ ๋ฌด์ธ๊ฐ์ ๋ชจ์์ง์ด๋ผ๋ ์๋ฏธ๋ก ๋ณผ ์ ์๋๋ฐ ๋ฆฌ์์ค๋ค์ ํ ๋ฌถ์์ผ๋ก ๋ชจ์์ ๋ง์น ๋๋ ํ ๋ฆฌ์ฒ๋ผ ํํํ๋ค๊ณ ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ข์ ๊ฒ ๊ฐ๋ค.
post๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์๊ธ๋ค์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. posts๋ผ๋ ๋ณต์ํ์ผ๋ก ํ๊ธฐํ๋ค๋ฉด ๊ฒ์๊ธ์ ๋ณต์๋ก ํํ์ด ๋๋ค. /posts๋ผ๊ณ ์ ๋๋ค๋ฉด ์ฌ๋ฌ post๋ค์ ์ง์นญํ ์ ์๋ค. ์ฌ๊ธฐ์ ํน์ post๋ฅผ ์ง์นญํ๊ณ ์ ํ๋ค๋ฉด /posts/{post์ id} ํน์ /posts/:id์ ํ์์ผ๋ก ํํํ ์ ์๋ค.
์ฌ๊ธฐ์ id๋ผ๋ ๊ฐ๋ ์ ์ฃผ์ํด์ผ ํ๋ค. ์์์ ์ธ๊ธํ id๋ post์ id์ด์ง resource์ id๋ ์๋๋ค. posts๋ผ๋ ํด๋ ๋ด์์ post๋ฅผ ์๋ณํ๋ id์ ๊ฐ๋ ์ด์ง, ์ ์ฒด๋ฅผ ์์ฐ๋ฅด๋ฉฐ resource๋ฅผ ์๋ณํ๋ uri๊ฐ ๋์ง๋ ์๋๋ค๋ ์๋ฏธ์ด๋ค. ๋ค๋ง resource Id๋ฅผ ๊ตฌ์ฑํ๋ ์์ ์ค์ ํ๋๋ก์ post id๊ฐ ์ฌ์ฉ๋๋ค๊ณ ๋ณผ ์ ์๊ฒ ๋ค.
์๋ฅผ ๋ค์ด ๋ณด๊ฒ ๋ค. post๋ผ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๊ณ , image๋ผ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ค. ๊ฐ ๋๋ ํ ๋ฆฌ์๋ 10๊ฐ ์ด์์ ํ์ผ๋ค์ด ๊ฐ๊ฐ ๋ค์ด๊ณ , ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ซ์๊ฐ์ id๋ฅผ ๊ฐ๊ฐ ๊ฐ์ง๊ณ ์๋ค. ์ด ์ํฉ์์ /posts/1์ด๋ผ๊ณ post id๋ฅผ ํํํ๊ณ , /images/1์ด๋ผ๊ณ image id๋ฅผ ํํํ๋ค๊ณ ํ์. post id์ image id๊ฐ ๋ชจ๋ ๊ฐ์ 1์ด๋ผ๋ ๊ฐ์ ๊ฐ์ง๊ฒ ๋์ง๋ง, ์ด๊ฒ์ ๊ฐ ๋๋ ํ ๋ฆฌ๋ผ๋ ๋ฒ์ฃผ ๋ด์์ ํต์ฉ๋๋ id๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์๋ณ๊ฐ๋ฅํ ๊ฐ์ผ๋ก์ ์ฌ์ฉ๋๋ค. ์์์ ์ง์ ํ resource id๋ก ์ฌ์ฉ๋ ์ ์๋ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์๋ค. ๊ฐ ๋๋ ํ ๋ฆฌ ๋ด๋ถ์์๋ง ์ ์ผ๊ฐ์ด๊ธฐ ๋๋ฌธ์, resource id๋ก๋ ์๋ณ์๋ก์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค. Collection pattern์์ ์ฌ์ฉ๋๋ id๊ฐ๊ณผ resource id๋ ๊ทธ๋ฐ ์๋ฏธ์์ ๊ตฌ๋ถ๋์ด์ผ ํ๊ฒ ๋ค.
์์์ ๋๋ ํ ๋ฆฌ๋ก ๋น์ ํ ๊ทธ๋ฃน๋ช ์ ๋๋ถ๋ถ ๋ณต์ํ์ผ๋ก ์ฌ์ฉ๋๋ค. item๋ค์ ๋ชจ์์ด๊ธฐ ๋๋ฌธ์ items์ ๊ฐ์ ๋ณต์ํ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ณ๋ค. ๋ฐ๋ผ์ /post/1๋ณด๋ค๋ /posts/1๊ฐ ๋ ๋งฅ๋ฝ์ ์ ๋นํ๊ณ , ๋ฐฐ์ดํฐ๋ฅผ ๋ด๊ธฐ ์ข๋ค.
ํน์ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ ํ์
๋ฌผ๋ก ์ ๋์ ์ผ๋ก ๊ณ ์ ๋ ๋ฐฉ์์ ์๋ ์ ์๋ค. /posts/{id}/comments์ ๊ฒฝ์ฐ, /comments?post_id={id}๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํํํ ์๋ ์๋ค.
rest๋ฅผ ๊ดํตํ๋ ์ฒ ํ ์ค์ ํ๋๊ฐ uri๋ฅผ ํตํด ์ผ๋ง๋ ์๊ธฐ์์ ์ ์ผ๋ก resource๋ฅผ ๋๋ฌ๋ด๊ณ ์ค๋ช ํ ์ ์๋๋๋ผ๊ณ ์๊ฐํ๋ค. Collection pattern๋ก ๊ฒฐ๊ตญ resource์ ๊ด์ ์์ ๋ณธ๋ค๋ฉด ์ดํด๊ฐ ๋น ๋ฅผ ๊ฒ ๊ฐ๋ค. ์ฃผ์ํด์ผ ํ ์ ์, uri์ resource์ ๋ํ ํํ์ด ์๋ ๋์์ด๋ ํ์์ ๋ํด ์์ ํ๊ณ ์ถ์ ์๊ตฌ๋ฅผ ์ฐธ๋ ๊ฒ์ด๋ค. restfulํ ์ค๊ณ๋ ๋ชจ๋ ๋์์ด๋ ํ์๋ฅผ HTTP method๋ฅผ ํตํด์ ๋๋ฌ๋ด๊ณ , uri๋ resource ์์ฃผ๋ก ํํํ๋ ๊ฒ์ด๋ค.
Last updated