Skip to content

08) hellohateoas

choi jae ho edited this page Jun 3, 2021 · 1 revision

๐Ÿ“‹ Hypermedia Driven RESTful Web Services - Spring HATEOAS

๐Ÿ’ก Introduction

โ“ Question

  • REST API๋„ LEVEL ์ด ์กด์žฌ ํ•œ๋‹ค.
  • HATEOAS๋ž€? : ๊ฐ€์žฅ ๋†’์€ ๋“ฑ๊ธ‰
  • HATEOAS๋ฅผ JAVA์—์„œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€?

๐Ÿ ๋ชฉํ‘œ

    1. HATEOAS ์˜ Concept
    1. HATEOAS ์˜ ๊ตฌํ˜„

๐Ÿ’ก REST maturity model : REST ์„ฑ์ˆ™๋„ ๋ชจ๋ธ

image

  • level 0 ~ 3 | ์ด์ „๊นŒ์ง€ ๊ตฌํ˜„ ํ•œ ๊ฒƒ์€ level 2
  • level 2 : Resouces + ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด HTTP method๋ฅผ ์ง€์ • (๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ level2์— ๊ธฐ๋ฐ˜)
  • level 1 : url ๋’ท ๋ถ€๋ถ„์— ์—ฐ์‚ฐ์— ๊ด€ํ•ด ๋„ฃ์–ด์ค€๋‹ค. ์•ก์…˜์— ๋Œ€ํ•ด ๋ณ„๋„์˜ URL ์„ ๋„ฃ์–ด์ค€๋‹ค.
  • level 3 : HATEOAS (level 2 + extra links to navigate through API) request๋Š” ์ฐจ์ด๊ฐ€ ์—†์ง€๋งŒ, ๋งํฌ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  • ์™„๋ฒฝํ•œ RESTful API๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด HATEOAS๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ’ก What is HATEOAS?

  • Hypermedia As The Engine Of Application State
  • One of the constraints of the REST architecture
  • Server response in the form of JSON+HAL
  • Such a resource consists of two parts:
  1. data
  2. links to actions that are possible to be performed on a given resource image
  • Data content, Links ๋กœ ๊ตฌ๋ถ„
  • level 2 ์—์„œ๋Š” Data content ๊นŒ์ง€๋งŒ..
  1. self : ์ด์ž์ฒด
  2. direct_movies : ๋งํฌ๋ฅผ ์ซ“์•„๊ฐ€๋ฉด, ์ด ๊ฐ๋…์ด ๋งŒ๋“  ๋งํฌ๋กœ ์ด๋™
  3. directors : ๋ชจ๋“  ๊ฐ๋…์— ๋Œ€ํ•œ List ๋งํฌ๋กœ ์ด๋™

โœ… HATEOAS ๋ž€?

  • REST API ์—์„œ, HATEOAS๋Š” ์‘๋‹ต์œผ๋กœ์„œ Hypermedia๋ฅผ ๋ณด๋‚ด์ฃผ๋Š”๋ฐ HATEOAS๋Š” ๋ฐ์ดํ„ฐ ์ •๋ณด ๋ฟ ์•„๋‹ˆ๋ผ, ์—ฐ๊ด€๋œ ์ •๋ณด๋„ ํ•จ๊ป˜ ๋งํฌ์— ๋„ฃ์–ด์„œ ๋ณด๋‚ด์ค€๋‹ค.
  • HATEOAS principle client์—๊ฒŒ the next potential steps์— ๋Œ€ํ•œ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ .

โœ… HATEOAS ๋ชฉ์ ?

  • ๋†’์€ ์ˆ˜์ค€์—์„œ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌ์‹œํ‚ค๊ธฐ ์œ„ํ•จ.
  • ๋ถ„๋ฆฌ์‹œํ‚ด์œผ๋กœ์จ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ.
  • ์„œ๋ฒ„๋ฅผ ๊ณ ์น˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ง‰์Œ.
  • url์ด ๋ณ€๊ฒฝ๋˜์–ด๋„, client์ž…์žฅ์—์„œ ์ด๋ฆ„์„ ํ†ตํ•ด ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜ํ–ฅ์ด ์—†๋‹ค.

HAL(Hypertext Application Language) Model

image

  • Links : relation / href