rest

2000๋…„๋„ => http์˜ ์ฃผ์š” ์ €์ž ์ค‘ ํ•œ๋ช…์ธ ๋กœ์ด ํ•„๋”ฉ์ด ์ฐฝ์‹œ

์™œ ์ด์ œ์„œ์•ผ ๊ฐ๊ด‘๋ฐ›๊ฒŒ ๋˜์—ˆ๋‚˜?

์š”์ฆ˜ ์‹œ๋Œ€์—๋Š” ๋””๋ฐ”์ด์Šค์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๋‹ค.

pc, ์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ ๋“ฑ๋“ฑ..

๋””๋ฐ”์ด์Šค๋งˆ๋‹ค ์•ฑ์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๋ฐ, ๊ฐ™์€ ๋กœ์ง์„ ๊ฐ€์ง„ ์„œ๋ฒ„๊นŒ์ง€ ๋””๋ฐ”์ด์Šค๋งˆ๋‹ค ๊ฐœ๋ฐœ?

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ํŠธ๋ Œ๋“œ๊ฐ€ ๋จ

์„œ๋ฒ„๋Š” API๋งŒ ์ œ๊ณต => ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ

API๋ฅผ ์„ค๊ณ„ํ•˜๋‹ค๋ณด๋‹ˆ, ์ข‹์€ ์„ค๊ณ„์˜ REST API๊ฐ€ ์ด์ œ์„œ์•ผ ๊ฐ๊ด‘๋ฐ›๊ฒŒ ๋จ.

ํŠน์ง•

1) Uniform (์œ ๋‹ˆํผ ์ธํ„ฐํŽ˜์ด์Šค) Uniform Interface๋Š” URI๋กœ ์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์กฐ์ž‘์„ ํ†ต์ผ๋˜๊ณ  ํ•œ์ •์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

2) Stateless (๋ฌด์ƒํƒœ์„ฑ) REST๋Š” ๋ฌด์ƒํƒœ์„ฑ ์„ฑ๊ฒฉ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ž‘์—…์„ ์œ„ํ•œ ์ƒํƒœ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ์ •๋ณด๋‚˜ ์ฟ ํ‚ค์ •๋ณด๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— API ์„œ๋ฒ„๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋งŒ์„ ๋‹จ์ˆœํžˆ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์„œ๋น„์Šค์˜ ์ž์œ ๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ์„œ๋ฒ„์—์„œ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•ด์ง‘๋‹ˆ๋‹ค.

3) Cacheable (์บ์‹œ ๊ฐ€๋Šฅ) REST์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” HTTP๋ผ๋Š” ๊ธฐ์กด ์›นํ‘œ์ค€์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์›น์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์กด ์ธํ”„๋ผ๋ฅผ ๊ทธ๋Œ€๋กœ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HTTP๊ฐ€ ๊ฐ€์ง„ ์บ์‹ฑ ๊ธฐ๋Šฅ์ด ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. HTTP ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€์—์„œ ์‚ฌ์šฉํ•˜๋Š” Last-Modifiedํƒœ๊ทธ๋‚˜ E-Tag๋ฅผ ์ด์šฉํ•˜๋ฉด ์บ์‹ฑ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

4) Self-descriptiveness (์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ) REST์˜ ๋˜ ๋‹ค๋ฅธ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” REST API ๋ฉ”์‹œ์ง€๋งŒ ๋ณด๊ณ ๋„ ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5) Client - Server ๊ตฌ์กฐ REST ์„œ๋ฒ„๋Š” API ์ œ๊ณต, ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์ด๋‚˜ ์ปจํ…์ŠคํŠธ(์„ธ์…˜, ๋กœ๊ทธ์ธ ์ •๋ณด)๋“ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๊ฐ๊ฐ์˜ ์—ญํ• ์ด ํ™•์‹คํžˆ ๊ตฌ๋ถ„๋˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์—์„œ ๊ฐœ๋ฐœํ•ด์•ผ ํ•  ๋‚ด์šฉ์ด ๋ช…ํ™•ํ•ด์ง€๊ณ  ์„œ๋กœ๊ฐ„ ์˜์กด์„ฑ์ด ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

6) ๊ณ„์ธตํ˜• ๊ตฌ์กฐ REST ์„œ๋ฒ„๋Š” ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณด์•ˆ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์•”ํ˜ธํ™” ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด ๊ตฌ์กฐ์ƒ์˜ ์œ ์—ฐ์„ฑ์„ ๋‘˜ ์ˆ˜ ์žˆ๊ณ  PROXY, ๊ฒŒ์ดํŠธ์›จ์ด ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜์˜ ์ค‘๊ฐ„๋งค์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

REST API์˜ ์„ค๊ณ„

1) URI => ์ž์›์„ ํ‘œํ˜„ => ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•จ 2) ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„ => HTTP Method(GET, POST, PUT, DELETE)๋กœ ํ‘œํ˜„

reference : http://meetup.toast.com/posts/92arrow-up-right https://github.com/iljun/DevNote/tree/master/common/restFulAPIarrow-up-right

Last updated