๋ฐฑ์—”๋“œ(Back-End) ๊ฐœ๋ฐœ/Java

REST API / RESTful ์ด๋ž€?

rabo93 2025. 2. 15. 00:27

1. REST (Representational State Transfer)

: ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ, ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ

 

'HTML URI'๋ฅผ ํ†ตํ•ด ์ž์›(Resource)์„ ๋ช…์‹œํ•˜๊ณ ,

'HTML Method(POST, GET, PUT, DELETE, PATCH๋“ฑ)'๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ž์›(URI)์— ๋Œ€ํ•œ 'CRUD Operation'์„ ์ ์šฉ

* CRUD Operation ์ด๋ž€?
- Create : ๋ฐ์ดํ„ฐ ์ƒ์„ฑ(POST)
- Read : ๋ฐ์ดํ„ฐ ์กฐํšŒ(GET)
- Update : ๋ฐ์ดํ„ฐ ์ˆ˜์ •(PUT, PATCH)
- Delete : ๋ฐ์ดํ„ฐ ์‚ญ์ œ(DELETE)

 

* ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„? = ์ž์›์˜ ํ‘œํ˜„

- ์ž์›(๋ฌธ์„œ, ์‚ฌ์ง„, ๊ทธ๋ฆผ, ๋ฐ์ดํ„ฐ ๋“ฑ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ)์„ HTTP URI๋ฅผ ํ†ตํ•ด ๋ช…์‹œ

ex) DB์˜ ์˜ํ™” ์ •๋ณด๊ฐ€ ์ž์›์ผ ๋•Œ, /movies๋ฅผ ์ž์›์˜ ํ‘œํ˜„์œผ๋กœ ์ •ํ•จ

* ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ(์š”์ฒญ > ์‘๋‹ต)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์›์˜ ์ƒํƒœ(์ •๋ณด)์— ๋Œ€ํ•œ ์กฐ์ž‘์„ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์ด์— ์ ์ ˆํ•œ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

=> ์ „๋‹ฌ ๋ฐฉ์‹์œผ๋กœ๋Š” JSON ๋˜๋Š” XML๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๊ฒƒ์ด ์ผ๋ฐ˜์ 

์ฆ‰, REST๋Š” HTTP URI๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ,
HTTP Method๋ฅผ ํ†ตํ•ด ์ž์›์„ ์ฒ˜๋ฆฌ(CRUD)ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์•„ํ‚คํ…์ณ!

 

 

2. API(Application Programming Interface)

: ์›น API๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์›น ๋ฆฌ์†Œ์Šค ์‚ฌ์ด์˜ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ฒŒ์ดํŠธ์›จ์ด. ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋”ฐ๋ผ์•ผํ•˜๋Š” ๊ทœ์น™.

 

 

 

3. REST API : REST๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ

์ตœ๊ทผ OpenAPI(๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๊ฐœ๋œ API: ChatGPT API ์—ฐ๋™, ๊ธˆ์œต๊ฒฐ์ œ์›, ๋‹ค์Œ ์šฐํŽธ๋ฒˆํ˜ธ API ์—ฐ๋™ ๋“ฑ)๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ์—…์ฒด ๋Œ€๋ถ€๋ถ„ REST API๋ฅผ ์ œ๊ณตํ•œ๋‹ค. API๋Š” ํ•ญ์ƒ URI ๋ฉ”๋‰ด์–ผ์„ ์ œ๊ณตํ•ด์•ผํ•œ๋‹ค. URI๋ฅผ ๋ชจ๋ฅด๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

* REST API ์„ค๊ณ„ ๊ทœ์น™
1) ๋ช…์‚ฌ, ์†Œ๋ฌธ์ž => ๋™์‚ฌx
2) ๋ช…์‚ฌ๋Š” ๋ณต์ˆ˜ํ˜•
3) URI ๋งˆ์ง€๋ง‰์€ / ํฌํ•จx
4) URI๋Š” ์–ธ๋”๋ฐ”x ํ•˜์ดํ”ˆ ์‚ฌ์šฉ -
5) ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋ฅผ ํ‘œ์‹œx

 

 

 

4. RESTful : REST ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” ์‹œ์Šคํ…œ

'REST API'๋ฅผ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ 'RESTful ํ•˜๋‹ค'๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* RESTful์˜ ๋ชฉ์  : ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด REST API๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ

* RESTfulํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ : URI ๊ทœ์น™์„ ์ง€ํ‚ค์ง€ ์•Š์€ API๋Š” REST API์˜ ์„ค๊ณ„ ๊ทœ์น™์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€ํ‚ค์ง€ ์•Š์€ ์‹œ์Šคํ…œ์€ REST API๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, RESTfulํ•˜์ง€ ๋ชปํ•œ ์‹œ์Šคํ…œ์ด๋‹ค๋ผ๊ณ  ํ•จ.

 

 


โœ… REST API์™€ API์˜ ์ฐจ์ด์ 

  1. API (Application Programming Interface)
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค.
    • REST, SOAP, GraphQL ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Œ.
  2. REST API (Representational State Transfer API)
    • API์˜ ํ•œ ์œ ํ˜•์œผ๋กœ, REST ์›์น™์„ ๋”ฐ๋ฅด๋Š” ์›น API๋ฅผ ์˜๋ฏธํ•จ.
    • HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์›(Resource) ์„ CRUD ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•จ.
    • RESTful API๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ๋ณดํ†ต JSON ๋˜๋Š” XML ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ.

โœ… ์ฃผ์š” ์ฐจ์ด์ 

๊ตฌ๋ถ„ API REST API
๊ฐœ๋… ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ํ†ต์‹  ์ธํ„ฐํŽ˜์ด์Šค REST ์›์น™์„ ๋”ฐ๋ฅด๋Š” ์›น API
๋ฐฉ์‹ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ๊ณผ ํ˜•์‹ ์‚ฌ์šฉ ๊ฐ€๋Šฅ HTTP ๊ธฐ๋ฐ˜, URL์„ ํ†ตํ•œ ์ž์› ์‹๋ณ„
๋ฐ์ดํ„ฐ ํ˜•์‹ XML, JSON, ํ…์ŠคํŠธ ๋“ฑ ๋‹ค์–‘ํ•จ ์ฃผ๋กœ JSON ์‚ฌ์šฉ
๊ตฌ์กฐ ํŠน์ •ํ•œ ๊ทœ์น™ ์—†์ด ์ž์œ ๋กญ๊ฒŒ ์„ค๊ณ„ ๊ฐ€๋Šฅ RESTful ์›์น™(์ž์› ์ค‘์‹ฌ, HTTP ๋ฉ”์„œ๋“œ ํ™œ์šฉ) ์ค€์ˆ˜

 

์ฆ‰, ๋ชจ๋“  REST API๋Š” API์ด์ง€๋งŒ, ๋ชจ๋“  API๊ฐ€ REST API๋Š” ์•„๋‹ˆ๋‹ค.