JiwonDev

๊ทธ๋ž˜์„œ Rest API๊ฐ€ ๋Œ€์ฒด ๋ญ”๋ฐ (์—ญ์‚ฌ์ด์•ผ๊ธฐ)

by JiwonDev

๐Ÿค” ์“ฐ์..๊ทธ API๋Š” Restful ํ•˜์ง€ ์•Š์€๋ฐ?

๐Ÿคฌ ๊ทœ์น™ ๋‹ค ์ง€์ผฐ๊ตฌ๋งŒ. Restful API๊ฐ€ ๋Œ€์ฒด ๋ญ”๋ฐ? REpresentation State Transfer? ์–ด๋””์„œ ๋งŒ๋“  ํ‘œ์ค€์ธ๋ฐ?

๐Ÿค” ๊ทธ๊ฑธ ๋ฌป๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ Rest ํ•˜์ง€ ์•Š๋„ค.

๐Ÿคฌ $#*%*#&%

 

 

๐Ÿšฉ ์ธํ„ฐ๋„ท์˜ ์—ญ์‚ฌ

๐Ÿ’ญ ์ธํ„ฐ๋„ท์€ ์–ธ์ œ ๋‚˜์˜จ๊ฑด๊ฐ€์š”?

- ์„ธ๊ณ„ 2์ฐจ ๋Œ€์ „์ดํ›„ 1960๋…„, ๋ฏธ๊ตญ ๊ตญ๋ฐฉ๋ถ€๋Š” ๊ธฐ์กด ์ค‘์•™์—๋งŒ ์ง‘์ค‘๋œ ํ†ต์‹  ์ฒด๊ณ„๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ํ•œ๋‹ค.

- ๋ฏธ๊ตญ ๊ตญ๋ฐฉ๋ถ€๋Š” ์ค‘์•™์ด ์—†๋”๋ผ๋„ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ์ „๊ตญ์ ์ธ ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ, ์•„ํŒŒ๋„ท์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

- 1973๋…„ TCP/IP ๋„์ž…, ๋ชจ๋“  ์ปดํ“จํ„ฐ๋ฅผ ํ•œ ํ†ต์‹ ๋ง์— ์—ฐ๊ฒฐ(International Network)ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ Internet ์ด๋ผ ๋ถ€๋ฅด๊ธฐ ์‹œ์ž‘.

- ์ด ๋•Œ ๋‹น์‹œ ์ธํ„ฐ๋„ท์€ ๊ตฐ๋Œ€, ๋Œ€ํ˜•๊ธฐ์—…, ๊ธฐ๊ด€์ฒ˜๋Ÿผ ํŠน์ˆ˜ํ•œ ๊ณณ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ๋ง์ด์—ˆ๋‹ค.

 

OSI 7 Layer, TCP/IP 4๊ณ„์ธต์€ ์–ธ์ œ ๋‚˜์˜ค๊ฒŒ ๋œ๊ฑฐ์ฃ ?

๋”๋ณด๊ธฐ

์š”์•ฝ)
OSI 7๊ณผ TCP/IP๋Š” ํฌ๊ฒŒ๋ณด๋ฉด ๋น„์Šทํ•˜์ง€๋งŒ, ๋งŒ๋“ค์–ด์ง„ ๋ชฉ์ ๊ณผ ๋งŒ๋“  ๊ณณ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
- OSI๋Š” ํ•˜๋“œ์›จ์–ด ์ œ์กฐ์‚ฌ์˜ ๋„คํŠธ์›Œํฌ ํ‘œ์ค€์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง. (ํ•˜๋“œ์›จ์–ด~์†Œํ”„ํŠธ์›จ์–ด)
- TCP/IP๋Š” ์ปดํ“จํ„ฐ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง. (ํ•˜๋“œ์›จ์–ด ๊ด€์‹ฌ X)

1. ์ตœ์ดˆ์˜ ์ธํ„ฐ๋„ท์€ 1960๋…„ ๋ฏธ๊ตญ ๊ตญ๋ฐฉ๋ถ€์˜ ํ†ต์‹ ์‹œ์Šคํ…œ, ์•„ํŒŒ๋„ท(ARPAnet)์ด ์‹œ์ดˆ์˜€์Šต๋‹ˆ๋‹ค.
2. ์˜›๋‚  ๋„คํŠธ์›Œํฌ ํ‘œ์ค€์ด ์—†์„๋•Œ์—๋Š”, ์žฅ์น˜๋ฅผ ๋งŒ๋“  ๊ณณ์ด ๋‹ค๋ฅด๋‹ค๋ฉด ํ†ต์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.
3. ์ด๋Š” ๋งค์šฐ ๋ถˆํŽธํ•˜๊ธฐ์—, 1970๋…„์— ํ‘œ์ค€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ 1984๋…„ ISO์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์œ„ํ•œ ํ‘œ์ค€์ธ OSI 7 Layer๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
4. ์ตœ์ดˆ์˜ TCP/IP๋ผ๋Š” ๊ฐœ๋…์€ 1974๋…„ ํ•œ ๋…ผ๋ฌธ์„ ํ†ตํ•ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.
5. 1982๋…„์— ๊ธฐ์กด ์•„ํŒŒ๋„ท์— ์‚ฌ์šฉํ•˜๋˜ ํ”„๋กœํ† ์ฝœ(NCP)์„ TCP/IP 4๊ณ„์ธต ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
6. ์•„ํŒŒ๋„ท์€ 1990๋…„์— ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ, ์—ฌ๊ธฐ์—์„œ ๊ฐœ๋ฐœ๋œ TCP/IP 4๊ณ„์ธต ๋ชจ๋ธ์€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

OSI๋Š” ๊ตญ์ œํ‘œ์ค€ํ™”๊ธฐ๊ตฌ์—์„œ ๋งŒ๋“  ๋งŒํผ, ๋” ์ผ๋ฐ˜์ ์ด๊ณ  ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์— ๋งž์ถฐ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๊ตฌ์„ฑํ•ด ๋ณ„ ์ž‘์—… ์—†์ด ๋ชจ๋‘ ํ†ต์‹  ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์ž! ๋ผ๊ณ  ์™ธ์น˜๋Š” ๊ฐ€์ด๋“œ๋ผ์ธ์ž…๋‹ˆ๋‹ค. (๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ์žฅ๋น„ ๋“ฑ์— ๋งŽ์ด ์“ฐ์ด๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (L7 ์Šค์œ„์น˜ ๋“ฑ))

TCP/IP๋Š” ํ˜„์žฌ์˜ ์ธํ„ฐ๋„ท ๊ตฌ์„ฑ์„ ์œ„ํ•ด ๋‚˜์™”๋˜ ์‹ค์šฉ์ ์ธ ์„ฑ๊ฒฉ์˜ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ž‘์„ฑํ•  ์‹œ์— OSI ๋ชจ๋ธ์„ ๋”ฐ๋ฅผ ๊ฒฝ์šฐ ๊ฐ ๊ณ„์ธต๋“ค์ด ๋„ˆ๋ฌด๋‚˜๋„ ์„ธ์„ธํ•˜์—ฌ ์ž‘์—…์ด ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. (๋‹น์žฅ ์šฐ๋ฆฌ๊ฐ€ ๋งค์ผ ์“ฐ๋Š” HTTP๋งŒํ•ด๋„ OSI ๋ชจ๋ธ์˜ 3๊ฐœ ๊ณ„์ธต์„ ๋„˜๋‚˜๋“ญ๋‹ˆ๋‹ค.) ์ด๋ ‡๊ฒŒ ์ปค๋‹ค๋ž€ ํ”„๋กœํ† ์ฝœ ๊ตฌ์„ฑ ์‹œ์— ๋‹ค์–‘ํ•œ ์˜์—ญ์„ ์•„์šฐ๋ฅด๋ฉฐ ์œ ๊ธฐ์ ์ธ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒƒ์ด TCP/IP ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์„ฑ๊ฒฉ๋“ค ๋•Œ๋ฌธ์—, ๋ณดํ†ต ์„œ๋น„์Šค ํ”„๋กœ๊ทธ๋ž˜๋จธ๋‹ค ํ•˜๋ฉด tcp/ip ๋ชจ๋ธ์„ ํ›จ์”ฌ ๋งŽ์ด ์ ‘ํ• ํ…Œ๊ณ , ๋„คํŠธ์›Œํฌ ์ž‘์—…์„ ํ•  ๊ฒฝ์šฐ osi ๋ชจ๋ธ์„ ์ž์ฃผ ์ ‘ํ•ฉ๋‹ˆ๋‹ค.
https://www.guru99.com/difference-tcp-ip-vs-osi-model.html

 

TCP/IP vs OSI Model: What’s the Difference?

TCP/IP vs OSI Model: The key difference between OSI Model and TCP/IP Model is that OSI refers to Open Systems Interconnection whereas TCP/IP refers to Transmission Control Protocol.

www.guru99.com

 

 

๐Ÿ’ญ ์›น์„œ๋ฒ„์™€ WWW๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

- 1980๋…„, ์Šค์œ„์Šค ์ž…์ž์—ฐ๊ตฌ์†Œ(CERN)์—์„œ ํž‰์Šค ์ž…์ž๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด ์ „์„ธ๊ณ„ 127๊ฐœ๊ตญ, 12000๋ช…์˜ ๊ณผํ•™์ž๋“ค์ด ๋ชจ์ด๊ฒŒ ๋œ๋‹ค.

- ๋‹น์‹œ ๋น„์ •๊ทœ์ง ํ”„๋กœ๊ทธ๋ž˜๋จธ์ธ ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๋Š” ์„œ๋ฅ˜๋‚˜ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ ์ž ํ–ˆ์—ˆ๋‹ค.

 

- ๊ฑฐ์˜ 10๋…„์ด ์ง€๋‚œ 1989๋…„, ์Šค์œ„์Šค ์ž…์ž์—ฐ๊ตฌ์†Œ์—๋„ ๋งˆ์นจ๋‚ด ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๊ฐ€ ์„ค์น˜๋˜๊ฒŒ ๋œ๋‹ค.

- 1990๋…„, ํŒ€๋ฒ„๋„ˆ์Šค๋ฆฌ๋Š” HTML ํ˜•์‹์˜ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” World Wide Web ์ด๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค.

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP

- 1990๋…„ 12์›”, ์ธํ„ฐ๋„ท์„ ์ด์šฉํ•ด ์›น ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  WWW์—์„œ ๋„คํŠธ์›Œํฌ ์ ‘์† ๊ฐ€๋Šฅํ•œ ์ฒซ ์‚ฌ์ดํŠธ(info.cern.ch)๋ฅผ ์˜คํ”ˆํ–ˆ๋‹ค.

๋‹น์‹œ ์‚ฌ์šฉํ–ˆ๋˜ WorldWideWeb ํ”„๋กœ๊ทธ๋žจ. ์ธํ„ฐ๋„ท์„ ์ด์šฉํ•ด ์›น์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

๐Ÿ’ญ HTTP๋Š” ๋Œ€์ฒด ๋ฌด์—‡์ธ๊ฐ€.

- ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋Š” [ ์›น์„œ๋ฒ„ + WWW ] ์กฐํ•ฉ์€ ์—ฐ๊ตฌ์†Œ์—์„œ ํญ๋ฐœ์ ์ธ ์ธ๊ธฐ๋ฅผ ์–ป๊ฒŒ๋œ๋‹ค.

- 1991๋…„, ์›น์„œ๋ฒ„์™€ WWW ํ†ต์‹ ์„ [ HTTP v0.9 ]๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜๊ณ , ์ด ํ”„๋กœํ† ์ฝœ์„ ํ‘œ์ค€ํ™” ํ•œ๋‹ค.

๋ง์ด ํ‘œ์ค€ํ™”์ง€, ์‚ฌ์šฉ๋ฒ•์€ ์ด๊ฒŒ ๋‹ค์˜€๋‹ค. URL์ด๋‚˜ ํ—ค๋”๋ผ๋Š” ๊ฐœ๋…์€ ๋‹น์‹œ์—๋Š” ์—†์—ˆ๋‹ค.

 

- ์ดํ›„ ๋‹ค์–‘ํ•œ ์ถ”๊ฐ€๊ธฐ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉฐ 1996๋…„ [ HTTP v1.0 ], 1997๋…„ [ HTTP v1.1 ] ์„ ๋ฐœํ‘œํ•˜๊ฒŒ ๋œ๋‹ค.

- [ HTTP v1.1 ] ์€ 15๋…„๊ฐ„ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ํ˜„์žฌ ๋ฐฐ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋…์€ ์ด HTTP v1.1๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

- ์Šค๋งˆํŠธํฐ์˜ ๋“ฑ์žฅ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํฌ๊ฒŒ ๋†’์•„์ง€์ž 2014๋…„ [ HTTP v2.0 ], 2020๋…„ [ HTTP v3.0 ]์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

๐Ÿ’ญ ์ธํ„ฐ๋„ท์˜ ๋Œ€์ค‘ ๋ณด๊ธ‰

- 1990๋…„ ์›น์„œ๋ฒ„์™€ WWW๋ผ๋Š” ์‹ ๋ฐ•ํ•œ ๊ฐœ๋…์ด ๋“ฑ์žฅํ•œ ํ›„, ๋ˆ ๋ƒ„์ƒˆ๋ฅผ ๋งก์€ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค ๊ธฐ์—…(ISP)์—์„œ ๋ณด๊ธ‰์„ ์‹œ๋„ํ•œ๋‹ค.

- ํ•˜์ง€๋งŒ ๊ฐ€์ •์ง‘์— ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ(์ธํ„ฐ๋„ท)์„ ๊ตฌ์ถ•ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด๋‚˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค์—ˆ๋‹ค.

- ๊ทธ๋ž˜์„œ ๊ธฐ์กด์— ์ง‘์ง‘๋งˆ๋‹ค ์žˆ๋˜ ์ „ํ™”์„ ์— ์ถ”๊ฐ€์ ์ธ ๋ชจ๋Ž€์žฅ์น˜(Modem)๋ฅผ ๋‹ฌ์•„ ์ธํ„ฐ๋„ท์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์ด ๋‹น์‹œ์—๋Š” ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „ํ™”๊ฐ€ ๋Š๊ฒจ์„œ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๋ฌผ๋ก  ์ธํ„ฐ๋„ท ์š”๊ธˆ๋„ ์ •๋ง ๋น„์ŒŒ์—ˆ๋‹ค.

- ์ดํ›„ 1994๋…„, WWW๋ณด๋‹ค ์–ด์ธํ•œ ๋„ท์Šค์ผ€์ดํ”„๊ฐ€ ๋‚˜์™”๊ณ  1995๋…„ ๊ทธ ์œ ๋ช…ํ•œ MS์˜ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ์–ด๊ฐ€ ์ถœ์‹œ๋œ๋‹ค.

WWW๋Š” ์›น ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ์ดˆ์˜€๋‹ค. ์ดํ›„ ๋„ท์Šค์ผ€์ดํ”„ -> ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ์–ด๊ฐ€ ๋‚˜์˜จ ๊ฒƒ.

- ์ด๋ ‡๊ฒŒ ์‹œ์ž‘๋œ ์ธํ„ฐ๋„ท์ด ์–ด๋–ป๊ฒŒ ์ „์„ธ๊ณ„์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž.

 

HTTP #1 ๋„คํŠธ์›Œํฌ์˜ ๋™์ž‘์›๋ฆฌ

์›น์‚ฌ์ดํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ „, ์ธํ„ฐ๋„ท์ด ์–ด๋–ป๊ฒŒ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. 1. Web ์ฐธ๊ณ ๋กœ ์›น์€ World Wide Web์„ ์ค„์—ฌ ๋ถ€๋ฅด๋Š” ๊ฒƒ์œผ๋กœ 1989๋…„ ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ ์—ฐ๊ตฌ์›๊ฐ„ ์ž

jiwondev.tistory.com

 

 


๐Ÿšฉ SOAP ์™€ REST API

SOAP์™€ REST ๋‘˜ ๋‹ค ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ API ์•„ํ‚คํ…์ฒ˜๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ์–ด๋–ค ๊ทœ์น™์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›์„ ๊ฒƒ์ธ๊ฐ€?

 

๐Ÿ’ญ SOAP ์•„ํ‚คํ…์ฒ˜์˜ ํƒ„์ƒ๋ฐฐ๊ฒฝ

1996๋…„, ๊ธฐ์กด์—๋Š” ์‚ฌ๋žŒ์ด ์ฝ๋Š” ๋ฌธ์„œ๋งŒ ์ฃผ๊ณ ๋ฐ›์•˜์œผ๋‚˜ ์ด์ œ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ผ์ด ๋งŽ์•„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋„คํŠธ์›Œํฌ ๋ง์„ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค๋ฉด ๋ฒˆ๊ฑฐ๋กœ์šด๋ฐ.. ๊ธฐ์กด HTTP๋ž‘ HTML์„ ์ด์šฉํ•ด์„œ Object-Model ๊ฐ™์€๊ฑฐ ๋งŒ๋“ค๋ฉด ์•ˆ๋ ๊นŒ?

โžก 2000๋…„, Microsoft์—์„œ XML-RPC ๋ฌธ๋ฒ•์„ ๋ฐœํ‘œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ SOAP(Simple Object Access Protocal)๋กœ ๊ฐœ๋ช…ํ•ฉ๋‹ˆ๋‹ค.
XML ์€ eXtensible Markup Language ๋ผ๊ณ  ํ•ด์„œ, ๊ธฐ์กด HTML(Hyper-Text Markup Language)์„ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœ ๋ฌธ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ [๋ฐ์ดํ„ฐ] ๋˜๋Š” [์„œ๋ฒ„์˜ ํŠน์ • ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ]์„ ์š”์ฒญํ•œ๋‹ค๊ณ  ํ•ด์„œ RPC(Remote-Procedure Call) ๊ธฐ์ˆ ์ด๋ผ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. 

 

 

๐Ÿ’ญ REST์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ

๋‹น์‹œ ๋Œ€ํ•™์›์ƒ์ด๋˜ Roy T Fielding, ๋ณธ์ธ์ด ์„ค๊ณ„ํ•œ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜(๋ฌธ๋ฒ•๊ณผ ๊ทœ์น™)์— REST๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ™์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ ๋กœ ๋‹น์‹œ Roy T Fielding์€ ์—ฐ๊ตฌ์‹ค์—์„œ HTTP ํ‘œ์ค€์„ ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • 1998๋…„ ๋Œ€ํ•™์›์ƒ์€ Microsoft Research์— ๋ณธ์ธ์ด ๋งŒ๋“  REST ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
  • 2000๋…„ ๋Œ€ํ•™์›์ƒ์€ RESTful API์— ๋Œ€ํ•ด ๋ฐ•์‚ฌ ๋…ผ๋ฌธ์œผ๋กœ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด HTTP Method, Status Code๋“ฑ์„ ์ ๊ทน์ ์œผ๋กœ ์ด์šฉํ•˜๊ณ , ์ž์›(Resource)์— ๊ณ ์œ ํ•œ URI์„ ํ• ๋‹นํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

REST๋Š” ๊ธฐ์กด HTTP ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” API ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

์ดˆ๊ธฐ์— Rest๋Š” ํฐ ๊ด€์‹ฌ์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์ง€๋งŒ, SOAP๊ฐ€ ์›Œ๋‚™ ๊ตฌ๋ ธ๊ธฐ์— ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•œ Rest ๋ฐฉ์‹์ด ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2004๋…„, ๊ฐ™์€ API ์š”์ฒญ์„ SOAP์™€ REST ๋ฐฉ์‹์œผ๋กœ ํ–ˆ์„ ๋•Œ.

 

์ดํ›„ ์•„๋งˆ์กด AWS, Salesforce.com ๊ฐ™์€ API ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋Œ€๊ธฐ์—…๋“ค์ด REST๋ฅผ ์„ ํƒํ•˜์—ฌ, ์ธ๊ธฐ๋Š” ๊ธ‰ ์ƒ์Šนํ•ฉ๋‹ˆ๋‹ค.

2006๋…„์ฏค REST๊ฐ€ ์—ญ์ „ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” REST๋งŒ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ฃ .

 

 

๐Ÿ’ญ ๊ทธ๋Ÿผ REST API๋Š” ๋Œ€ํ•™์›์ƒ์ด ์“ด ๋…ผ๋ฌธ์ด ํ‘œ์ค€์ธ๊ฐ€์š”?

- 2008๋…„์— EMC, IBM, Microsoft๊ฐ€ ํ•จ๊ป˜ CMS๋ฅผ ํ‘œ์ค€ํ™”ํ•˜๋ฉด์„œ REST API์— ๋Œ€ํ•œ ๊ฒƒ์„ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค” (Roy T. Fielding) : ์ €๊ธฐ์„œ ๋งŒ๋“ ๊ฑด ๋‚ด๊ฐ€ ์ •์˜ํ•œ REST ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ง€ ๋งˆ์Œ๋Œ€๋กœ ์“ด๊ฑฐ์—์š”

 

- 2016๋…„๋ถ€ํ„ฐ ๋งค๋…„ Microsoft๊ฐ€ REST API์— ๋Œ€ํ•œ ํ‘œ์ค€ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค” (Roy T. Fielding) : ์ €๊ฑด REST API ์•„๋‹ˆ๋ผ๋‹ˆ๊นŒ? Rest API๋Š” (Hypertext) Message-Driven์ด์–ด์•ผํ•ด.

 

 

๐Ÿ’ญ ๊ทธ๋Ÿผ ๋Œ€์ฒด REST API๊ฐ€ ๋ญ”๋ฐ

REST : ๋ถ„์‚ฐ ํ•˜์ดํผ๋ฏธ๋””์–ด(ex ์›น)์„ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ. ๊ทœ์น™๊ณผ ์ œ์•ฝ์กฐ๊ฑด

REST API : REST ๋”ฐ๋ฅด๋Š” API /  HTTP๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™.

  • ๋ช…ํ™•ํ•œ Client - Server ๊ตฌ์กฐ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ Stateless ํ•œ ํ†ต์‹ 
  • ์ž์›์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋Š” URI (Uniform Interface)์™€ HTTP Method์˜ ์‚ฌ์šฉ

 

Roy T. Fielding๋Š” URI๊ฐ€ Hypertext-Driven ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ REST๋Š” ์•„๋ž˜ ๊ทœ์น™์„ ์ž˜ ์ง€ํ‚ค์ง€ ์•Š๋Š”๋‹ค.

  • REST๋Š” Self-descriptive Messages ์—ฌ์•ผ ํ•œ๋‹ค. (๋ฉ”์‹œ์ง€๋งŒ ๋ณด๊ณ  ๋‚ด์šฉ์„ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.)

Content-Type, Link ๊ฐ™์€ ํ•ด์„์šฉ ์ •๋ณด๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•จ๊ป˜ ์ ํ˜€์žˆ์–ด์•ผํ•œ๋‹ค.

  • REST๋Š” HATEOAS (Hypermedia as the engine of application state) ํ•ด์•ผํ•œ๋‹ค.
    ์‰ฝ๊ฒŒ ๋งํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์Œ ์ƒํƒœ๊ฐ€ ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค. ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด์ค˜์•ผํ•œ๋‹ค.

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ƒํƒœ๊ฐ€ ์ด๋Ÿฐ์‹์œผ๋กœ ํ˜๋Ÿฌ๊ฐ„๋‹ค.
์ด๋Ÿฐ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€์— ํ˜„์žฌ ์ƒํƒœ์™€, ๋‹ค์Œ ์ƒํƒœ๊ฐ’์ด ์ •์˜๋œ ๊ฑธ HATEOAS ํ•˜๋‹ค๊ณ  ๋งํ•œ๋‹ค.

 

 

๐Ÿ’ญ ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ๊ฐ•์กฐํ•˜๋Š” ์ด์œ 

Roy T. Fielding๊ฐ€ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ•์กฐํ•˜๋Š” ์ด์œ ๋Š”, REST๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค๊ฒŒ ๋œ ๊ณ„๊ธฐ๋ฅผ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์ด ๋ณ€๊ฒฝ๋˜์–ด๋„, ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์ด RESTํ•œ ์„ค๊ณ„๋ผ๊ณ  ์ •์˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ.

HTTP๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๊ธฐ์กด ์›น์ด ํ˜ธํ™˜์ด ์•ˆ๋ ๊ฑฐ๊ฐ™์€๋ฐ.. ๊ทธ๊ฑธ ์œ ์ง€ํ•˜๋ฉด์„œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?
โžก ๊ทธ๋ž˜์„œ ํƒ„์ƒํ•œ ๊ฒƒ์ด REST API ์„ค๊ณ„๋ฐฉ๋ฒ• ("How do I improve HTTP without breaking the Web")

์›น์˜ ์ƒํƒœ ์ „์ด(๋งํฌ)๋Š” ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์— ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„๊ฐ€ ์ œ๊ณต(HATEOAS)ํ•ด์•ผ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, MS ๊ฐ™์€ ๊ณณ์—์„œ ์ •์˜ํ•œ REST ํ‘œ์ค€์€ ๊ทธ๋ ‡์ง€ ๋ชปํ•˜๋‹ค.

 

 


๐Ÿšฉ ๊ทธ๋Ÿผ REST๋Š” ๋งŒ๋Šฅ์ธ๊ฐ€์š”

๐Ÿ’ญ ์•„๋‹ˆ์š”.

REST ์„ค๊ณ„๋ฐฉ๋ฒ•์€ ๊ธฐ์กด์˜ ์›น(HTTP)์— ์ข‹์€ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ผ์ณค์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค REST๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์ด ๋Œ€ํ•™์›์‹œ์ ˆ HTTP ํ‘œ์ค€์„ ๋งŒ๋“ค์—ˆ๋‹ต๋‹ˆ๋‹ค ใ…‹ใ…‹..

ํ•˜์ง€๋งŒ REST๋Š” ๋ณ„๋„์˜ ๊ธฐ๋Šฅ์—†์ด, ๊ธฐ์กด HTTP ๋ฉ”์„œ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„๋ ฅ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹จ๊ฑด์„ ์‚ญ์ œํ•  ๋•Œ์—๋Š” Delete site.com/member ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ๊ฑด์„ ์‚ญ์ œํ•  ๋• ์• ๋งคํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์˜์ƒ์ด๋‚˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์ฒ˜๋Ÿผ ์ปค๋„ฅ์…˜ ์ƒํƒœ ๊ฐ’์„ ๊ณ„์† ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•  ๋•Œ๋Š” HTTP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜์˜จ๊ฒŒ ์›น์†Œ์ผ“! ์ฒ˜์Œ๋งŒ HTTP๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด, ์ดํ›„ ์ปค๋„ฅ์…˜์„ ์œ ์ง€ํ•œ๋‹ค.

 

 

 

๐Ÿ’ญ 2022๋…„์˜ ์›น์€ ์–ด๋– ํ•œ๊ฐ€

MS์˜ I.E๊ฐ€ ๊นฝํŒ์„ ์ณ๋†“๊ธด ํ–ˆ์ง€๋งŒ, ๊ตฌ๊ธ€์˜ Chrome์ด ๋‚˜์˜จ ์ดํ›„ ํ‘œ์ค€์ด ํ™•๋ฆฝ๋˜๊ณ  ์•„๋ž˜์˜ ๊ทœ์น™๋“ค์ด ์ž˜ ์ง€์ผœ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์›น ํŽ˜์ด์ง€๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์–ด๋„, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. (๋ฐ˜๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ € -> ์›น๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)
  • HTTP, HTML์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ๋‚˜์˜ค๊ณ  ๋ณ€๊ฒฝ๋˜์–ด๋„, ๊ธฐ์กด์˜ ์›น์€ ์ž˜ ๋™์ž‘ํ•ด์•ผํ•œ๋‹ค.

๋‹น์—ฐํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฑด ์ƒ๋‹นํžˆ ํž˜๋“  ๊ณผ์ •์„ ๊ฑฐ์ณ์™”์Šต๋‹ˆ๋‹ค.

  • HTML5 ์ดˆ์•ˆ์„ ๋งŒ๋“ค์–ด๋‚ด๋Š”๋ฐ 6๋…„์ด ๊ฑธ๋ ธ๋‹ค.
  • HTTP/1.1 ์„ ์™„์„ฑํ•˜๋Š”๋ฐ 7๋…„, HTTP/2.0์„ ๋งŒ๋“œ๋Š”๋ฐ ์ด 15๋…„์ด ๊ฑธ๋ ธ๋‹ค.
  • ํ‘œ์ค€์— ์žˆ๋Š” ์˜คํƒ€ (Referrer ์ธ๋ฐ referer ๋กœ ์˜คํƒ€๋ƒ„)์„ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ๋•Œ๋ฌธ์— ์•„์ง๊นŒ์ง€ ์•ˆ๊ณ ์น˜๊ณ  ์žˆ๋‹ค.
  • ๋งŽ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋งŒ์šฐ์ ˆ ์žฅ๋‚œ์œผ๋กœ ๊ตฌํ˜„ํ•œ 416 ์ฝ”๋“œ๋ฅผ, ์ดํ›„ ํ™•์žฅ์„ฑ ๋•Œ๋ฌธ์— 416์„ ์˜๊ตฌ ๊ฒฐ๋ฒˆ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.

๋งŽ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹ค์ˆ˜ํ•œ ๊ธฐ๋Šฅ์€, ํ‘œ์ค€์„ ๋ฐ”๊ฟ”๋ฒ„๋ฆฐ๋‹ค. ํ™•์žฅ์„ฑ๊ณผ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ๋•Œ๋ฌธ

๊ตฌ๊ธ€ ์Šคํ† ์–ด์—๋ณด๋ฉด, ์•ฑ ์—…๋ฐ์ดํŠธ ๋•Œ๋ฌธ์— ์งœ์ฆ๋‚œ๋‹ค๋Š” ๋ฆฌ๋ทฐ๋ฅผ ์ž์ฃผ ๋ณด์…จ์„๊ฒ๋‹ˆ๋‹ค.

Chrome, Safari, Firefox ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ € ๋•Œ๋ฌธ์— ์›น์„ ์‚ฌ์šฉ ๋ชปํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์–ด๋ณธ์  ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.
๋ฌผ๋ก  K-๊ณต๊ณต๊ธฐ๊ด€, K-์€ํ–‰์€ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ์–ด๊ฐ€ ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ๋ชปํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค..์–ด.. ๊ทธ๋ž˜๋„ ์ตœ๊ทผ์—๋Š” ๋งŽ์ด ๋‚˜์•„์กŒ์ž–์•„์š”?

 

 

๐Ÿ’ญ ๊ทธ๋ž˜์„œ ์–ด์ฉŒ๋ผ๊ตฌ์š”. REST๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผํ•ด์š”?

๊ผญ REST๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋”ฐ๋ฅผ ํ•„์š”๋Š” ์—†๋‹ค๊ณ  Roy T. Fielding ๋ณธ์ธ๋„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ฅธ๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด ์ข‹์•„์ง€๋Š”๊ฒƒ๋„ ์•„๋‹ˆ๋‹ˆ๊นŒ์š”.

https://www.youtube.com/watch?v=RP_f5dMoHFc&t=1205s

 

์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด REST API๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, ๋‹ค๋“ค ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  REST API๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ใ…‹ใ…‹ ๋ฌผ๋ก  Roy ๋ณธ์ธ์€ ์‹ซ์–ดํ•˜๊ฒ ์ฃ 
์—ฌ๋‹ด์œผ๋กœ MS์˜ ์˜คํ”ˆ์†Œ์Šค์— REST API๋ฅผ ๋‹ค๋ฅธ์ด๋ฆ„์œผ๋กœ ๊ฐœ๋ช…ํ•˜์ž๋Š” PR์ด ์˜ฌ๋ผ์™”์ง€๋งŒ, ๊ทธ๋Ÿด ์ด์œ ๊ฐ€ ์—†๋‹ค๊ณ  ๋ฌด์‹œํ–ˆ๋‹ต๋‹ˆ๋‹ค.

ํ˜„์žฌ์˜ Rest API๋Š” HTML์ด๋“  JSON์ด๋“  ๋ณ„๋„์˜ ๋ฌธ์„œ ์—†์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค

 

 

 

๐Ÿ“” ๋ ˆํผ๋Ÿฐ์Šค

๋ชจ์งˆ๋ผ - HTTP์˜ ์ง„ํ™”๊ณผ์ •

Naver D2 - ๊ทธ๋Ÿฐ REST API๋กœ ๊ดœ์ฐฎ์€๊ฐ€

์ธํ”„๋Ÿฐ- SpringBoot๋ฅผ ํ™œ์šฉํ•œ RESTful ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœ

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ