๋ƒ…๋‹ค ๋”ฐ๋ผํ•˜๋Š” ํด๋ก  ์ฝ”๋”ฉ์—์„œ๋Š” API ๋ช…์„ธ๊ฐ€ ํ•„์š” ์—†์—ˆ์ง€๋งŒ, ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋‹ด์€ ์›นํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ค ๋ณด๋‹ˆ ์–ด๋–ค API์—์„œ ์–ด๋–ค ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ”„๋ก ํŠธ์™€ ๋ฐฑ์—์„œ์˜ ๋ณ€์ˆ˜ ์ •๋ฆฌ๊ฐ€ ํ•„์ˆ˜๊ฒ ๋‹ค๋Š” ํŒ๋‹จ์ด ๋“ค์—ˆ๋‹ค.

์ด์— ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” API ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ API ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

์šฉ์–ด์™€ ๊ฐœ๋…

API๋ž€?

Application Programming Interface, ์‘์šฉํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค

API์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•  ๋•Œ์—๋Š” ์ข…์ข… ๋ ˆ์Šคํ† ๋ž‘์˜ ์ ์›์œผ๋กœ ๋น„์œ ๋˜๊ณ ๋Š” ํ•œ๋‹ค. ์ฆ‰, API๋Š” ์†๋‹˜(ํ”„๋กœ๊ทธ๋žจ)์ด ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”๋‰ด(๋ช…๋ น ๋ชฉ๋ก)์„ ์ •๋ฆฌํ•ด์ฃผ๊ณ , ์ฃผ๋ฌธ(๋ช…๋ น)์„ ๋ฐ›์œผ๋ฉด ์š”๋ฆฌ์‚ฌ(์‘์šฉํ”„๋กœ๊ทธ๋žจ)์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ์š”์ฒญ๋œ ๋ฉ”๋‰ด(๋ช…๋ น์— ๋Œ€ํ•œ ๊ฐ’)์„ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ถœ์ฒ˜ : wishket blog (www.blog.wishket.com)

์‰ฝ๊ฒŒ ๋งํ•ด, API๋Š” ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์„ ๋„์™€์ฃผ๋Š” ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ธ๊ฐ„์ด ์•„๋‹Œ ์ฝ”๋“œ๋“ค๋ผ๋ฆฌ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋‹ค.

API๋Š” ์„œ๋ฒ„์—์„œ ๋งŒ๋“ค๋ฉฐ, ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ์–ด๋–ค ๋ฉ”๋‰ด๋ฅผ ์š”์ฒญํ•˜๋ฉด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ• ์ง€๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ๋‹จ์—์„œ API์™€ API ๋ช…์„ธ์„œ๋ฅผ ์ž‘์„ฑํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ ๊ทธ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๊ณ  ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

API์˜ ์—ญํ• 

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

 

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

 

 

 

REST API๋ž€?

REpresentational State Transfer API, ์ž์›์˜ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ

REST API์—์„œ๋Š” JSON¹์ด๋‚˜ XML² ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฉฐ, URI³๋ฅผ ํ†ตํ•ด ์ž์›์„ ๋ช…์‹œํ•˜๊ณ  HTTP ํ”„๋กœํ† ์ฝœโด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ž์›์— ๋Œ€ํ•œ CRUDโต๋ฅผ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š” API์ด๋‹ค. 

 

โ–ผ ์œ„์˜ ๋ฌธ์žฅ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์šฉ์–ด ์ •๋ฆฌ ๐Ÿ“š

JSON

JavaSript Object Notation

JavaScript์—์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œํ˜„์‹์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰์˜ DATA ๊ตํ™˜ ํ˜•์‹์ด๋‹ค.

  • JSON ํ‘œํ˜„์‹์€ ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„ ๋ชจ๋‘ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ์šฉ๋Ÿ‰์ด ์ž‘์•„ ์ตœ๊ทผ์—๋Š” XML์„ ๋Œ€์ฒดํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • JSON = ๋ฐ์ดํ„ฐ ํฌ๋งท์ผ ๋ฟ - ์–ด๋– ํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•๋„, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ๋ฒ•๋„ ์•„๋‹Œ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ‘œํ˜„๋ฐฉ๋ฒ•์ด๋‹ค.
  • ํ‘œํ˜„ ๋ฐฉ๋ฒ• : ํƒœ๊ทธ(Tag)๋กœ ํ‘œํ˜„ํ•˜์ง€ ์•Š๊ณ , ์ค‘๊ด„ํ˜ธ({}) ํ˜•์‹๊ณผ ํ•จ๊ป˜ ๊ฐ’์„ ,๋กœ ๋‚˜์—ดํ•˜์—ฌ ํ‘œํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค.
๋”๋ณด๊ธฐ
{
  "employees": [
    {
      "name": "Surim",
      "lastName": "Son"
    },
    {
      "name": "Someone",
      "lastName": "Huh"
    },
    {
      "name": "Someone else",
      "lastName": "Kim"
    } 
  ]
}

 

 

XML

eXtensible Markup Language, ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋งˆํฌ์—… ์–ธ์–ด

HTML๊ณผ ๋งค์šฐ ๋น„์Šทํ•œ ๋ฌธ์ž ๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด(test-based markup language)์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ XML์€ HTML์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด ์•„๋‹ˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•  ๋ชฉ์ ์œผ๋กœ๋งŒ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ๋˜ํ•œ, XML ํƒœ๊ทธ๋Š” HTML ํƒœ๊ทธ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

XML์˜ ํŠน์ง•

  • Extensible(=ํ™•์žฅ ๊ฐ€๋Šฅํ•œ) : ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํƒœ๊ทธ(Tag)๋ฅผ ์‚ฌ์šฉ์ž ๋งˆ์Œ๋Œ€๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์„ฑ์ด ์žˆ๋‹ค.
  • HTML๊ณผ ๋‹ฌ๋ฆฌ Tag๊ฐ€ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
  • JSON ์—ญ์‹œ ๋ฐ์ดํ„ฐ ํฌ๋งท์ผ ๋ฟ - ์–ด๋– ํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•๋„, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ๋ฒ•๋„ ์•„๋‹Œ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ‘œํ˜„๋ฐฉ๋ฒ•์ด๋‹ค.
  • ํ‘œํ˜„๋ฐฉ๋ฒ• : ๋ฐ์ดํ„ฐ๊ฐ’ ์–‘์ชฝ์œผ๋กœ Tag๊ฐ€ ์žˆ๋‹ค. (HTML์„ ๊ทผ๋ณธ์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ!)
๋”๋ณด๊ธฐ
<?xml version="1.0" encoding="euc-kr" ?>
<๋ถ์‚ฐ๊ณ ๋“ฑํ•™๊ต์„ ์ˆ˜๋ชฉ๋ก>
     <์„ ์ˆ˜๋ช…๋‹จ>
          <์ด๋ฆ„>์ฑ„์น˜์ˆ˜</์ด๋ฆ„>
          <ํ•™๋…„>3</ํ•™๋…„>
          <๋“ฑ๋ฒˆํ˜ธ>4</๋“ฑ๋ฒˆํ˜ธ>
          <ํฌ์ง€์…˜>C</ํฌ์ง€์…˜>
          <ํ‚ค>197</ํ‚ค>
          <์ฒด์ค‘>93</์ฒด์ค‘>
     </์„ ์ˆ˜๋ช…๋‹จ>
     <์„ ์ˆ˜๋ช…๋‹จ>
          <์ด๋ฆ„>๊ถŒ์ค€ํ˜ธ</์ด๋ฆ„>
          <ํ•™๋…„>3</ํ•™๋…„>
          <๋“ฑ๋ฒˆํ˜ธ>5</๋“ฑ๋ฒˆํ˜ธ>
          <ํฌ์ง€์…˜>F</ํฌ์ง€์…˜>
          <ํ‚ค>178</ํ‚ค>
          <์ฒด์ค‘>62</์ฒด์ค‘>
     </์„ ์ˆ˜๋ช…๋‹จ>
     <์„ ์ˆ˜๋ช…๋‹จ>
          <์ด๋ฆ„>์ •๋Œ€๋งŒ</์ด๋ฆ„>
          <ํ•™๋…„>3</ํ•™๋…„>
          <๋“ฑ๋ฒˆํ˜ธ>14</๋“ฑ๋ฒˆํ˜ธ>
          <ํฌ์ง€์…˜>SG</ํฌ์ง€์…˜>
          <ํ‚ค>184</ํ‚ค>
          <์ฒด์ค‘>70</์ฒด์ค‘>
     </์„ ์ˆ˜๋ช…๋‹จ>
     <์„ ์ˆ˜๋ช…๋‹จ>
          <์ด๋ฆ„>์†กํƒœ์„ญ</์ด๋ฆ„>
          <ํ•™๋…„>2</ํ•™๋…„>
          <๋“ฑ๋ฒˆํ˜ธ>7</๋“ฑ๋ฒˆํ˜ธ>
          <ํฌ์ง€์…˜>PG</ํฌ์ง€์…˜>
          <ํ‚ค>168</ํ‚ค>
          <์ฒด์ค‘>59</์ฒด์ค‘>
     </์„ ์ˆ˜๋ช…๋‹จ>
     <์„ ์ˆ˜๋ช…๋‹จ>
          <์ด๋ฆ„>๊ฐ•๋ฐฑํ˜ธ</์ด๋ฆ„>
          <ํ•™๋…„>1</ํ•™๋…„>
          <๋“ฑ๋ฒˆํ˜ธ>10</๋“ฑ๋ฒˆํ˜ธ>
          <ํฌ์ง€์…˜>PF</ํฌ์ง€์…˜>
          <ํ‚ค>189.2</ํ‚ค>
          <์ฒด์ค‘>83</์ฒด์ค‘>
     </์„ ์ˆ˜๋ช…๋‹จ>
     <์„ ์ˆ˜๋ช…๋‹จ>
          <์ด๋ฆ„>์„œํƒœ์›…</์ด๋ฆ„>
          <ํ•™๋…„>1</ํ•™๋…„>
          <๋“ฑ๋ฒˆํ˜ธ>11</๋“ฑ๋ฒˆํ˜ธ>
          <ํฌ์ง€์…˜>SF</ํฌ์ง€์…˜>
          <ํ‚ค>187</ํ‚ค>
          <์ฒด์ค‘>75</์ฒด์ค‘>
     </์„ ์ˆ˜๋ช…๋‹จ>
</๋ถ์‚ฐ๊ณ ๋“ฑํ•™๊ต์„ ์ˆ˜๋ชฉ๋ก>

 

AJAX

Asynchronous JavaScript and XML

JavaScript๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์‹์œผ๋กœ XML์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋™์ ์ธ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์˜ ํ•˜๋‚˜์ด๋‹ค.

Ajax๋Š” ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋”ฉํ•˜์ง€ ์•Š๊ณ ๋„, ์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ฆ‰, Ajax๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์˜์—ญ์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์›นํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์—๋งŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด ๋•Œ ์„œ๋ฒ„์™€๋Š” JSON, XML, HTML, ํ…์ŠคํŠธ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

AJAX์˜ ๋™์ž‘ ๋ฐฉ์‹

  1. Request (์š”์ฒญ) : JavaScript๊ฐ€ (XMLHttpRequest ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด) ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ๋‹ค.  → ์„œ๋ฒ„๋Š” ์‘๋‹ต์œผ๋กœ ๋ฐ์ดํ„ฐ(XML, JSON)๋ฅผ XMLHttpRequest๊ฐ์ฒด์— ์ „์†กํ•œ๋‹ค.
  2. Response (์‘๋‹ต) : JavaScript๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ํŽ˜์ด์ง€์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

URI

Uniform Resource Identifier, ํ†ตํ•ฉ ์ž์› ์‹๋ณ„์ž

์ธํ„ฐ๋„ท์— ์žˆ๋Š” ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์†Œ์ด๋‹ค. ๋”ฐ๋ผ์„œ URI๋ผ๋Š” ๊ฐœ๋…์€ ์–ด๋–ค ํ˜•์‹์ด ์žˆ๋‹ค๊ธฐ ๋ณด๋‹ค๋Š” ํŠน์ • ์ž์›์„ ์‹๋ณ„ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค.

URL๊ณผ URN์˜ ์ƒ์œ„ ๊ฐœ๋…์œผ๋กœ, ์ž์›์„ ์œ„์น˜๋กœ ์‹๋ณ„ํ•˜๋ฉด URL, ๊ณ ์œ ํ•œ ์ด๋ฆ„์œผ๋กœ ์‹๋ณ„ํ•˜๋ฉด URN์ด๋‹ค.

URI์˜ ๊ตฌ์กฐ

URI ์„ค๊ณ„ ์›์น™

1. /(์Šฌ๋ž˜์‹œ)๋Š” ๊ณ„์ธต ๊ด€๊ณ„(is a)๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (animal ์•ˆ์— human์ด ํฌํ•จ๋ผ์žˆ๋‹ค. human is animal.)

https://www.ojjambbong.com/animal/human

2. ?(์ฟผ๋ฆฌ ์ŠคํŠธ๋ง)์€ ์†์„ฑ(has a)๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (human์€ gender๋ผ๋Š” ์†์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. human has a gender type.)

https://www.ojjambbong.com/animal/human?gender=female

3. URI์˜ ๋งˆ์ง€๋ง‰์—๋Š” /(์Šฌ๋ž˜์‹œ)๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

https://www.ojjambbong.com/animal/human/ (x)
https://www.ojjambbong.com/animal/human  (o)

4. URI์˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด _(์–ธ๋”๋ฐ”)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  -(ํ•˜์ดํ”ˆ)์„ ์‚ฌ์šฉํ•œ๋‹ค.

https://www.ojjambbong.com/animal/human?gender_type=female (x)
https://www.ojjambbong.com/animal/human?gender-type=female (o)

5. ์†Œ๋ฌธ์ž ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋˜๊ณ  ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

https://www.ojjambbong.com/animal/HUMAN?gender_type=female (x)
https://www.ojjambbong.com/animal/human?image.jpeg         (x)

 

URL

Uniform Resource Locator, ํ†ตํ•ฉ ์ž์› ์ง€์‹œ์ž

 URL์€ URI์˜ ๊ฐ€์žฅ ํ”ํ•œ ํ˜•ํƒœ์ด๋ฉฐ, ํŠน์ • ์„œ๋ฒ„์˜ ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์œ„์น˜๋ฅผ ์„œ์ˆ ํ•œ๋‹ค.

URL์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋””์— ์žˆ์œผ๋ฉฐ, ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋ถ„๋ช…ํžˆ ์•Œ๋ ค์ค€๋‹ค.

  • http://naver.com - ๋„ค์ด๋ฒ„ ์‚ฌ์ดํŠธ์˜ URL
  • http://img.naver.net/static/www/dl_qr_naver.png- ๋„ค์ด๋ฒ„ ์•ฑ QR ์ฝ”๋“œ์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ URL
  • http://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=104 - ๋„ค์ด๋ฒ„ ๋‰ด์Šค์—์„œ ๋ถ„๋ฅ˜ ์ค‘ "์„ธ๊ณ„" ์ฃผ์ œ์˜ ๊ธฐ์‚ฌ์— ๋Œ€ํ•œ URL 

 

URN

Uniform Resource Name, ํ†ตํ•ฉ ์ž์› ์ด๋ฆ„

 URL์€ URI์˜ ๋˜ ๋‹ค๋ฅธ ํ˜•ํƒœ์ด๋ฉฐ, ์ฝ˜ํ…์ธ ๋ฅผ ์ด๋ฃจ๋Š” ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๊ทธ ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜์— ์˜ํ–ฅ๋ฐ›์ง€ ์•Š๋Š” ์œ ์ผ๋ฌด์ดํ•œ ์ด๋ฆ„ ์—ญํ• ์„ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์œ„์น˜ ๋…๋ฆฝ์ ์ธ URN์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์—ฌ๊ธฐ์ €๊ธฐ๋กœ ์˜ฎ๊ธฐ๋”๋ผ๋„ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์˜ URN์€ ์ธํ„ฐ๋„ท ํ‘œ์ค€ ๋ฌธ์„œ 'RFC 2141'์ด ์–ด๋””์— ์žˆ๋“  ์ƒ๊ด€ ์—†์ด ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์นญํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  • urn:ietf:rfc:2141 - 'RFC 2141' ๋ฌธ์„œ

๋‹จ, URN์€ ์•„์ง ์‹คํ—˜ ์ค‘์ธ ์ƒํƒœ๋กœ ๋„๋ฆฌ ์ฑ„ํƒ๋˜์ง€ ์•Š์•„ ์ ‘ํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค.

 

CRUD

Create, Read, Update, Delete

CRUD๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ธ Create(์ƒ์„ฑ), Read(์ฝ๊ธฐ), Update(๊ฐฑ์‹ ), Delete(์‚ญ์ œ)๋ฅผ ๋ฌถ์–ด์„œ ์ผ์ปซ๋Š” ๋ง์ด๋‹ค.

API์—์„œ CRUD๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด๋Š” ์š”์ฒญ๋“ค์„ ํฌ๊ฒŒ 4๊ฐ€์ง€ ์„ฑ๊ฒฉ์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ ์š”์ฒญ๋“ค์ด๋‹ค. 

Create = POST

์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์˜ฌ๋ ค๋‹ฌ๋ผ๋Š” Create๋Š” POST ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค. POST๋ฅผ ํ†ตํ•ด ํ•ด๋‹น URI๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

Read = GET

์„œ๋ฒ„์—์„œ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” Read๋Š” GET ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค. GET์„ ํ†ตํ•ด ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•˜๊ณ , ํ•ด๋‹น ๋„ํ๋จผํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

Update = PUT, PATCH

์ •๋ณด๋ฅผ ๋ฐ”๊พธ๋Š” Update๋Š” PUT ๋˜๋Š” PATCH ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค. PUT์€ ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ, PATCH๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋งŒ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

Delete = DELETE

์ •๋ณด๋ฅผ ์ง€์šฐ๋Š” Delete๋Š” DELETE ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค. DELETE๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

HTTP

HyperText Transfer Protocol

์›น ํ™˜๊ฒฝ์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ(ํ†ต์‹  ๊ทœ์•ฝ, ์•ฝ์†)์ด๋‹ค.

TCP/IP๋Š” ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์˜ ์š”๊ตฌ์— ๋Œ€์‘ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ํŽ˜์ด์ง€ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ๋‹ค. HTTP๋Š” ์ด๋Ÿฌํ•œ TCP/IP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— HTTP ์š”์ฒญ๊ณผ HTTP ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

HTTP๋Š” ์ด์ „ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ํŠน์„ฑ์„ ์ง€๋‹ˆ๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ์š”์ฒญ/์‘๋‹ต์€ ๋…๋ฆฝ์ ์ธ ๊ฒƒ์œผ๋กœ ์ „์— ๋ณด๋‚ธ ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ง„ํ–‰ ๊ณผ์ •์ด๋‚˜ ๊ทธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ์—๋Š” ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜์„ ํ™œ์šฉํ•œ๋‹ค.

HTTP์˜ ๊ตฌ์กฐ

HTTP ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response)์€ ๋ชจ๋‘ headers๊ณผ body๋ผ๋Š” ๊ณตํ†ต๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด์— ๋”ํ•ด ๊ฐ๊ฐ Request๋Š” start line, Response๋Š” status line์ด๋ผ๋Š” ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค.

 

HTTP ์ƒํƒœ์ฝ”๋“œ

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด๋Š” HTTP์˜ ์ƒํƒœ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์š”์ฒญ์˜ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒํƒœ ์ฝ”๋“œ๋Š” 3์ž๋ฆฌ ์ˆซ์ž๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ๋Š” 1์—์„œ 5๊นŒ์ง€ ์ œ๊ณต๋œ๋‹ค. (์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ 4์™€ 5์ธ ๊ฒฝ์šฐ๋Š” ์ •์ƒ์ ์ธ ์ƒํ™ฉ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ์ฆ‰์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ์ •๋ณด์ด๋‹ค.)

  • 1xx(์ •๋ณด) : ์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • 2xx(์„ฑ๊ณต) : ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›์•˜์œผ๋ฉฐ ์ธ์‹ํ–ˆ๊ณ  ์ˆ˜์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • 3xx(๋ฆฌ๋‹ค์ด๋ ‰์…˜) : ์š”์ฒญ ์™„๋ฃŒ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • 4xx(ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜) : ์š”์ฒญ์˜ ๋ฌธ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • 5xx(์„œ๋ฒ„ ์˜ค๋ฅ˜) : ์„œ๋ฒ„๊ฐ€ ๋ช…๋ฐฑํžˆ ์œ ํšจํ•œ ์š”์ฒญ์— ๋Œ€ํ•œ ์ถฉ์กฑ์„ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ, API ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋Š” ๋‚ด์šฉ์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋งˆ์ € ์•Œ์•„๋ณด๋„๋ก ํ•œ๋‹ค. 

 

 


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

BELATED ARTICLES

more