[Network] REST API + RESTful API Concept๐Ÿฑโ€๐Ÿ

์ตœํ˜„์ง„ยท2021๋…„ 11์›” 22์ผ
0

REST

๐Ÿ‘‰ ํ”„๋กœํ† ์ฝœ์ด๋‚˜ ํ‘œ์ค€์ด ์•„๋‹Œ ์›น ์„œ๋น„์Šค์™€ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฝ๋Ÿ‰ํ™”์˜ ํ•„์š”์— ๋งž์ถ˜ ์•„ํ‚คํ…์ฒ˜ ์›์น™ ์„ธํŠธ (์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜)

๐Ÿ‘‰ ๊ฐ€์ด๋“œ๋ผ์ธ์ด๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” REST๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•จ

REST API

๐Ÿ‘‰ 'REST ์•„ํ‚คํ…์ฒ˜'์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์ค€์ˆ˜ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค

๐Ÿ‘‰ URI(์ž์›) + HTTP Method(ํ–‰์œ„) + ํ‘œํ˜„์œผ๋กœ ๊ตฌ์„ฑ

๐Ÿ‘‰ ๋ฐ์ดํ„ฐ ์š”์ฒญ์€ ์ผ๋ฐ˜์ ์œผ๋กœ HTTP(ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ ์ด๋ฃจ์–ด์ง

  • HTTP Method
    - GET(Read)
    - POST(Create)
    - PUT(Update)
    - DELETE(Delete)

๐Ÿ‘‰ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋ฉด RESTful API ๋˜๋Š” RESTful ์›น ์„œ๋น„์Šค๊ฐ€ HTML, XML, ์ผ๋ฐ˜ํ…์ŠคํŠธ, JSON๊ณผ ๊ฐ™์€ ํ˜•์‹์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•จ.

โ€ป REST = Representational State Transfer

RESTful API

๐Ÿ‘‰ REST API๋ฅผ ๋‹จ์ˆœํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•œ ๊ฒƒ

๐Ÿ‘‰ 6๊ฐ€์ง€ ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ค€์ˆ˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  1. Client-Server : ํด๋ผ์ด์–ธํŠธ + ์„œ๋ฒ„ + ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์˜ 'ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜'

  2. Stateless : Statelessํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜(๋‹จ, ์„ธ์…˜์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋Œ)

  3. Cacheable : ์ผ๋ถ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜(request, response)์—์„œ ์บ์‹œ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์ด ํ•„์š”ํ•จ

  4. Uniform Inerface : ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์‹œ ์ „์ฒด์ ์ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ž˜ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค(์š”๊ตฌ์‚ฌํ•ญ) ํ•„์š”

  5. Layered System : ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„์˜ ๊ณ„์ธต์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ์‹œ์Šคํ…œ ์ œ์•ฝ ํ•„์š” (ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์—†๋„๋ก)

  6. Self-Descriptiveness : ์„ ํƒ์  ์ฝ”๋“œ ์˜จ๋””๋งจ๋“œ(์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์‘๋‹ตํ•ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ–‰์œ„)

Naming Convention

  • ์†Œ๋ฌธ์ž ์‚ฌ์šฉ

  • ๊ณ„์ธต ๊ด€๊ณ„๋Š” ์Šฌ๋ž˜์‹œ(/)๋กœ ํ‘œํ˜„

  • ๋ฆฌ์†Œ์Šค๋ช…์€ ๋ช…์‚ฌ ์‚ฌ์šฉ

  • ํ•˜์ดํ”ˆ(-) ์‚ฌ์šฉ (์–ธ๋”์Šค์ฝ” ์‚ฌ์šฉโŒ)

  • URI์˜ ๋งˆ์ง€๋ง‰์€ ์Šฌ๋ž˜์‹œโŒ


=> API๋Š” ์†Œ์Šค์ฝ”๋“œ๋“ค ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก/ REST API๋Š” ์›น์˜ ํ”„๋กœํ† ์ฝœ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก!


Ref ๐Ÿ“š

  1. RedHat - REST์™€ SOAP ๋น„๊ต

  2. jy.log - [ Network ] REST๋ž€? / Rest API์™€ Restful API์˜ ์ฐจ์ด์  / REST ๊ทœ์น™

  3. ์ดŒ์ฅ - RESTful API ๊ฐœ๋…์ •๋ฆฌ

profile
์œ ์—ฐํ•˜๊ณ  ์˜์—ฐํ•˜๊ฒŒ, ๊พธ์ค€ํžˆ

0๊ฐœ์˜ ๋Œ“๊ธ€