๐ŸŒ API ์„ค๊ณ„-HATEOAS

 

HATEOAS ๊ธฐ๋ฐ˜ REST API

HATEOAS(Hypermedia as the engine of application state)๋Š” REST Application Architecture๋ฅผ ๋‹ค๋ฅธ Network Application Architecture์™€ ๊ตฌ๋ถ„์ง“๋Š” ์ค‘์š”ํ•œ ์ œ์•ฝ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ ๋™์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” Hypermedia ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์‘๋‹ต(Response)ํ•  ๋•Œ ๊ด€๋ จ ๋ฆฌ์†Œ์Šค ๋งํฌ๋‚˜ ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ๋งํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ Hypermedia๋ž€ ๊ฐ„๋‹จํžˆ ์ด์•ผ๊ธฐํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋ฐ ๊ธฐํƒ€ ๋ฏธ๋””์–ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ์›น ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

HATEOAS์˜ ์žฅ๋‹จ์ 

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

HATEOAS ์ ์šฉ ์˜ˆ์ œ

GET /accounts/12345 HTTP/1.1
Host: bank.example.com
HTTP/1.1 200 OK

{
    "account": {
        "account_number": 12345,
        "balance": {
            "currency": "usd",
            "value": 100.00
        },
        "links": {
            "deposits": "/accounts/12345/deposits",
            "withdrawals": "/accounts/12345/withdrawals",
            "transfers": "/accounts/12345/transfers",
            "close-requests": "/accounts/12345/close-requests"
        }
    }
}



References
https://en.wikipedia.org
https://restfulapi.net
https://sddev.tistory.com