๐Ÿ”™๋’ค๋กœ๊ฐ€๊ธฐ

HATEOAS(Hypertext As The Engine Of Application State)๋Š” REST ์•„ํ‚คํ…์ฒ˜ ์›์น™ ์ค‘ ํ•˜๋‚˜๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ•˜์ดํผ๋ฏธ๋””์–ด์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ์›์น™์— ๋”ฐ๋ฅด๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต์— ํฌํ•จ๋œ ํ•˜์ดํผ๋ฏธ๋””์–ด ๋งํฌ์™€ ๋™์ž‘์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ ์ „์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

HATEOAS์˜ ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋Š”๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•˜์ดํผ๋ฏธ๋””์–ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํด๋ผ์ด์–ธํŠธ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์ค„์–ด๋“ ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ , ๋ณ€๊ฒฝ์— ๋” ์ž˜ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์ ์ธ API ์ œ๊ณต HATEOAS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ˜„์žฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ์ ์ ˆํ•œ ์ž‘์—…์„ ์„ ํƒํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. API์˜ ํƒ์ƒ‰ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์…€ํ”„ ๋ฌธ์„œํ™” ํ•˜์ดํผ๋ฏธ๋””์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” API๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๊ฐ€๋Šฅํ•œ ์ž‘์—… ๋ฐ ์ƒํƒœ ์ „์ด๋ฅผ ์ž๋™์œผ๋กœ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” API ์‚ฌ์šฉ์ž์—๊ฒŒ ์…€ํ”„ ๋ฌธ์„œํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ณ„๋„์˜ ๋ฌธ์„œํ™” ์ž‘์—…์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ HATEOAS๋Š” ๊ตฌํ˜„ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์ด ๋Š˜์–ด๋‚˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ HATEOAS๋ฅผ ๋„์ž…ํ•  ๋•Œ๋Š” ์ด๋Ÿฌํ•œ ์ด์ ๊ณผ ๋‹จ์ ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์ ˆํ•œ ์„ ํƒ์„ ํ•ด์•ผ ๋‹ค.