[๋ฐ๋ธŒ์ฝ”์Šค] API์™€ REST API ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ

2025. 4. 5. 23:31ยท๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL

ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์ž‘๋™ํ•˜๋Š” ์›น ํ™˜๊ฒฝ์—์„œ API๋Š” ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด๋‹ค. API์™€ REST API์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๊ณ  ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.


๐ŸŒ API

ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ๋„์™€์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค

API๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„œ๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ†ต๋กœ ์—ญํ• ์„ ํ•œ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋ž€?

๋‘ ๊ฐœ์ฒด ์‚ฌ์ด๋ฅผ ์ค‘์žฌํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๋งค๊ฐœ

์˜ˆ๋ฅผ ํ‹€์–ด, ์šฐ๋ฆฌ๊ฐ€ ์Šค๋งˆํŠธํฐ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฒ„ํŠผ์ด๋‚˜ ํ™”๋ฉด์„ ํ„ฐ์น˜ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฌ๋žŒ-๊ธฐ๊ธฐ ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ GUI๋ผ๊ณ  ํ•œ๋‹ค.

  • GUI: ๋ฒ„ํŠผ, ์•„์ด์ฝ˜ ๋“ฑ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ๋กœ ์ œ์–ดํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • CLI: ํ…์ŠคํŠธ ๋ช…๋ น์–ด๋กœ ์ปดํ“จํ„ฐ์™€ ์†Œํ†ตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
๐Ÿ‘‰ API๋Š” ๊ฐœ๋ฐœ์ž์™€ ์„œ๋ฒ„, ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค

 

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์™€ API

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ด ๋กœ์ง์„ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก API๋กœ ๋งŒ๋“ค์–ด ์ œ๊ณตํ•œ๋‹ค.


๐ŸŒ REST API

API์—๋„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ์›น ๊ฐœ๋ฐœ์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ REST API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

REST๋ž€?

REprisentational State Transfer, HTTP ํ†ต์‹ ์—์„œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ

REST API๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฑด, REST ๊ทœ์น™์„ ์ž˜ ์ง€ํ‚จ API๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค.

๐Ÿ‘‰ REST API = HTTP ๊ทœ์•ฝ์„ ์ž˜ ์ง€์ผœ ๋งŒ๋“  API

 

RESTful์ด๋ž€?

REST๋งŒํผ RESTful์„ ๋งŽ์ด ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค.

 

REST ์›์น™์„ ์ž˜ ์ง€์ผœ ๊ตฌํ˜„ํ•œ API๋ฅผ RESTful API๋ผ๊ณ  ํ•œ๋‹ค.
"RESTful"ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์„ค๊ณ„๊ฐ€ ๊น”๋”ํ•˜๊ณ , HTTP ํ”„๋กœํ† ์ฝœ์„ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

 

HTTP์™€ REST API

์›น์€ ์ธํ„ฐ๋„ท์ด๋ผ๋Š” ๋„คํŠธ์›Œํฌ ์œ„์—์„œ ์ž‘๋™ํ•œ๋‹ค. ์ธํ„ฐ๋„ท์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ๊ทœ์น™์ด ํ•„์š”ํ•œ๋ฐ, ์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์น™์ด ๋ฐ”๋กœ HTTP(HyperText Transfer Protocol)์ด๋‹ค.

 

REST API๋Š” ์ด HTTP ์œ„์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์š”์†Œ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ฃผ์†Œ(URL): ์–ด๋–ค ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • HTTP ๋ฉ”์„œ๋“œ: ์–ด๋–ค ๋™์ž‘์„ ํ• ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค(GET, POST, PUT, DELETE ๋“ฑ)
  • ๋ฐ์ดํ„ฐ: ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ฌ ์‹ค์ œ ์ •๋ณด

 

REST API์˜ ํŠน์ง•

REST API๋Š” ๋‹ค์Œ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.

 

1. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ
์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ/์ฒ˜๋ฆฌ๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•œ๋‹ค.

 

2. ๋ฌด์ƒํƒœ์„ฑ(Stateless)
์„œ๋ฒ„๋Š” ์š”์ฒญ ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋ชจ๋“  ์š”์ฒญ์€ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ด๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

3. ์บ์‹œ ๊ฐ€๋Šฅ(Cachealbe)
์‘๋‹ต์€ ์บ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์–ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋œ๋‹ค.

 

4. ๊ณ„์ธตํ™” ๊ตฌ์กฐ(Layered System)
ํด๋ผ์ด์–ธํŠธ๋Š” ์ค‘๊ฐ„์„œ๋ฒ„(ํ”„๋ก์‹œ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ)๋ฅผ ๊ฑฐ์ณ ์š”์ฒญํ•ด๋„ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค.

 

5. ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค(Uniform Interface)
REST์˜ ํ•ต์‹ฌ ์›์น™์œผ๋กœ, ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋Š” URI๋กœ ์‹๋ณ„๋˜๊ณ , HTTP ๋ฉ”์„œ๋“œ๋กœ ํ–‰์œ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

 

URI

โญ Uniform Resource Identifier, ์ธํ„ฐ๋„ท ์ž์›์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํ†ตํ•ฉ ์ž์› ์‹๋ณ„์ž

 

REST API ์„ค๊ณ„ ๊ทœ์น™

REST API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ URL ์„ค๊ณ„ ๊ทœ์น™์„ ์ง€์ผœ์•ผ ํ•œ๋‹ค.

  1. ์†Œ๋ฌธ์ž๋งŒ ์‚ฌ์šฉ
  2. ์–ธ๋”์Šค์ฝ”์–ด(-) ๋Œ€์‹  ํ•˜์ดํ”ˆ(-) ์‚ฌ์šฉ
  3. ๋งˆ์ง€๋ง‰์— ์Šฌ๋ž˜์‹œ(/)๋ฅผ ๋ถ™์ด์ง€ ์•Š์Œ
  4. URL์— ํ–‰์œ„(๋™์‚ฌ)๋ฅผ ๋„ฃ์ง€ ์•Š์Œ - /getProducts โŒ, /products โœ…
  5. ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  6. ๋ฆฌ์†Œ์Šค๋Š” ๋ณต์ˆ˜ํ˜•์œผ๋กœ ์ž‘์„ฑ - /product โŒ, /products โœ…

 

REST API ์„ค๊ณ„ ์˜ˆ์‹œ

http://localhost:8888/์ „์ฒด ์ƒํ’ˆ ์กฐํšŒ
http://localhost:8888/์ƒํ’ˆ ๋“ฑ๋ก
http://localhost:8888/์ „์ฒด ์ƒํ’ˆ ์‚ญ์ œ

์ด์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” API๋ฅผ ์„ค๊ณ„ํ•ด๋ณด์ž.

GET /products -> ์ „์ฒด ์ƒํ’ˆ ์กฐํšŒ
POST /product -> ์ƒํ’ˆ ๋“ฑ๋ก
DELETE /products -> ์ „์ฒด ์ƒํ’ˆ ์‚ญ์ œ

์ด๋ ‡๊ฒŒ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ๋งŒ์•ฝ ํ•˜๋‚˜์˜ ์ƒํ’ˆ๋งŒ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,

GET /products/1
GET /products/2

์ด๋ ‡๊ฒŒ ID ๊ฐ’์„ URL์— ํฌํ•จ์‹œ์ผœ, ๊ฐ™์€ API ์—”๋“œํฌ์ธํŠธ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์œ ๋™์ ์ธ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์—”๋“œํฌ์ธํŠธ

โญ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” URL ๊ฒฝ๋กœ


API ๊ฐœ๋…์„ ๋งŒ๋“ค๊ณ , API ์„ค๊ณ„ ์›์น™์„ ๋ฐฐ์› ๋‹ค. ๋™์‚ฌ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋Š”๊ฒŒ ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ API ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ , API ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ฐ์„ ์žก์•„๋ด์•ผ๊ฒ ๋‹ค.

'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐ๋ธŒ์ฝ”์Šค] Express REST API ๊ธฐ์ดˆ(get(), res.send(), res.json(), res.params())  (1) 2025.04.08
[๋ฐ๋ธŒ์ฝ”์Šค] Node.js ๋ชจ๋“ˆ๊ณผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ดํ•ด(๋ชจ๋“ˆํ™”, npm, ๋…ผ๋ธ”๋กœํ‚น I/O)  (1) 2025.04.07
[๋ฐ๋ธŒ์ฝ”์Šค] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ํ•˜๊ธฐ(๐Ÿ‹Docker, MariaDB, SQL)  (0) 2025.04.04
[๋ฐ๋ธŒ์ฝ”์Šค] Hello, Backend!(์„œ๋ฒ„, HTTP, Node.js)  (0) 2025.04.03
[๋ฐ๋ธŒ์ฝ”์Šค] ์›น ํŽ˜์ด์ง€์— ์ƒ๋ช… ๋ถˆ์–ด๋„ฃ๊ธฐ(CSS, Javascript)  (0) 2025.04.02
'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐ๋ธŒ์ฝ”์Šค] Express REST API ๊ธฐ์ดˆ(get(), res.send(), res.json(), res.params())
  • [๋ฐ๋ธŒ์ฝ”์Šค] Node.js ๋ชจ๋“ˆ๊ณผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ดํ•ด(๋ชจ๋“ˆํ™”, npm, ๋…ผ๋ธ”๋กœํ‚น I/O)
  • [๋ฐ๋ธŒ์ฝ”์Šค] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ํ•˜๊ธฐ(๐Ÿ‹Docker, MariaDB, SQL)
  • [๋ฐ๋ธŒ์ฝ”์Šค] Hello, Backend!(์„œ๋ฒ„, HTTP, Node.js)
ํ‚ํ‚์ž‰
ํ‚ํ‚์ž‰
๋ฟŒ๋ก ํŠธ ๊ฐœ๋ฐœ์ž(์ง€๋ง์ƒ)์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ
  • ํ‚ํ‚์ž‰
    monicx.dev
    ํ‚ํ‚์ž‰
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (92) N
      • ๐Ÿ–ฅ๏ธdevelop (11)
        • Github (2)
        • Frontend (4)
        • Backend (5)
        • Mobile (0)
        • CS (0)
        • Three.js (0)
        • Docker (0)
      • ๐Ÿ“•review (17) N
        • ์ฑ… (10)
        • ํ–‰์‚ฌ (0)
        • ํšŒ๊ณ  (3) N
      • โญproject (5)
        • petiary (2)
        • ๆšŽ่ฉ  (0)
        • ์ธํ„ด (2)
      • ๐Ÿ˜ถ‍๐ŸŒซ๏ธalgorithm (0)
      • ๐Ÿ’กtips (1)
      • ๐Ÿ˜Ždaily (10)
      • ๐Ÿ•น๏ธgame (0)
      • ๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค (47) N
        • TIL (26)
        • ํ”„๋กœ์ ํŠธ (15) N
        • ํšŒ๊ณ  (6)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • ๋ฒจ๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
ํ‚ํ‚์ž‰
[๋ฐ๋ธŒ์ฝ”์Šค] API์™€ REST API ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”