Skip to content

Latest commit

ย 

History

History
103 lines (99 loc) ยท 6.53 KB

File metadata and controls

103 lines (99 loc) ยท 6.53 KB

WEB๊ฐœ๋ก 

  • Web์ด๋ž€ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๋ฅผ ํ†ตํ•ด ์‚ฌ๋žŒ๋“ค์ด ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ „ ์„ธ๊ณ„์ ์ธ ์ •๋ณด ๊ณต๊ฐ„์„ ๋งํ•จ
  • Web ์ข…๋ฅ˜
    • Web Site (google, naver, daum) - ์‚ฌ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
    • User Interface (Chrome, safari, Explorer) - ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ์™€์˜ ์˜์‚ฌ์†Œํ†ต
    • API (Web Service, Kakao Open API) - ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • Web
    • HTTP - ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค (ํ†ต์‹ ์„ ํ•˜๊ธฐ๋กœ ํ•œ ์•ฝ์†ํ•œ ํ˜•ํƒœ)
    • URL - ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž (ํ•œ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋ถˆ๊ฐ€๋Šฅ)
    • HTML - ํ•˜์ดํผ๋จธ๋””์–ด ํฌ๋งท
  • HTTP
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ํ”„๋กœํ† ์ฝœ

    • ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก์šฉ ํ”„๋กœํ† ์ฝœ -> ๋‹ค์–‘ํ•œ ์ปดํ“จํ…Œ์–ด์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ์ „์†ก ๊ฐ€๋Šฅ

    • TCP๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ REST์˜ ํŠน์ง•์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š” Web๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ

    • Client - Sever์—๊ฒŒ ์š”์ฒญ -> Server -> Client์—๊ฒŒ ์‘๋‹ต

    • ๋ฆฌ์†Œ์Šค ์ทจ๋“ R

    • ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ C (์š”์ฒญ์„ ํ• ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๋‹ค๋ฆ„) ( ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ)

    • ๋ฆฌ์†Œ์Šค ๊ฐฑ์‹ , ์ƒ์„ฑ C/U (์•ˆ์ „ํ•˜์ง€ ์•Š์Œ)

    • ๋ฆฌ์†Œ์Šค ์‚ญ์ œ D (์•ˆ์ „ํ•˜์ง€ ์•Š์Œ)

  • ์—๋Ÿฌ ์ฝ”๋“œ
    • 100๋ฒˆ๋Œ€ -> ์ฒ˜๋ฆฌ์ค‘

    • 200๋ฒˆ๋Œ€ -> ์„ฑ๊ณต (201๋ฒˆ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ)

    • 300๋ฒˆ๋Œ€ -> ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ REspnse์˜ ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋กœ ๋‹ค์‹œ ์š”์ฒญ

    • 400๋ฒˆ๋Œ€ -> ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์—๋Ÿฌ

    • 500๋ฒˆ๋Œ€ -> ์„œ๋ฒ„ ์ฒ˜๋ฆฌ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ -> ์žฌ์š”์ฒญ ํ•˜๋ฉด ๋จ

    • 200 ์„ฑ๊ณต

    • 201 ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ ์„ฑ๊ณต

    • 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ, ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅธ ์žฅ์†Œ๋กœ ๋ณ€๊ฒฝ๋˜๋ฏธ์„ ์•Œ๋ฆผ

    • 303 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ, Client์—์„œ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋กœ ์š”์ฒญ ์ฒ˜๋ฆฌ

    • 400 ์š”์ฒญ ์˜ค๋ฅ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์—๋Ÿฌ

    • 401 ๊ถŒํ•œ ์—†์Œ

    • 404 ๋ฆฌ์†Œ์Šค ์—†์Œ (ํŽ˜์ด์ง€ ์ฐพ์ง€ ๋ชปํ•จ)

    • 500 ์„œ๋ฒ„ ๋‚ด๋ถ€ ์—๋Ÿฌ (์„œ๋ฒ„ ๋™์ž‘ ์ฒ˜๋ฆฌ ์—๋Ÿฌ)

    • 503 ์„œ๋น„์Šค ์ •์ง€ (์ ๊ฒ€ ๋“ฑ๋“ฑ)

REST API ๊ฐœ๋ก 

- ๊ณ„์ธตํ™” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ๋ฐฉํ™”๋ฒฝ, ๊ฒŒ์ดํŠธ์›จ์ด, Proxy ๋“ฑ ๋‹ค๊ณ„์ธต ํ˜•ํƒœ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
- ์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ: ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹จ์ˆœํ™” ์‹œํ‚ค๊ณ  ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ์„œ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • Rest ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜ ์›๋ฆฌ
    • Client, Server ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์ ธ ์žˆ์–ด์•ผ ํ•จ
    • stateless ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๊ฐ€ ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์บ์‹œ ํด๋ผ์ด์–ธใ…Œ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ์บ์‹œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
      • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์บ์‹œ๋ฅผ ํ†ตํ•ด์„œ ์‘๋‹ต์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๋‚ฎ์ถค
    • Code On Demand ์ž๋ฐ” ์• ํ”Œ๋ฆฟ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”Œ๋ž˜์‹œ ๋“ฑ ํŠน์ • ๊ธฐ๋Šฅ์„ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๊ด€์„ฑ ์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ์ด ์ž˜ ์ง€์ผœ์กŒ๋Š”์ง€์— ๋”ฐ๋ผ REST๋ฅผ ์ž˜ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ํŒ๋‹จ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ž์› ์‹๋ณ„
    • ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ์กฐ์ž‘
    • ์ž๊ธฐ ์„œ์ˆ ์  ๋ฉ”์‹œ์ง€
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์—”์ง„์œผ๋กœ์„œ ํ•˜์ดํผ๋ฏธ๋””์–ด
  • ์ž์› ์‹๋ณ„
    • ์›น ๊ธฐ๋ฐ˜์˜ REST์—์„œ๋Š” ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์„ URL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ์กฐ์ž‘
    • Web์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • HTML, XML,JSON,TEXT๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Œ
      • ๋ฆฌ์†Œ์Šค ํƒ€์ž…์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ header๋ถ€๋ถ„์— content-type์„ ๋™ํ•ด์„œ ์–ด๋– ํ•œ ํƒ€์ž…์ธ์ง€๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๊ธฐ ์„œ์ˆ ์ 
    • ์š”์ฒญ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ ๋˜์–ด์ ธ์•ผ ํ•˜๋Š”์ง€ ์ถฉ๋ถ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • HTTP ๊ธฐ๋ฐ˜์˜ REST์—์„œ๋Š” HTTP Method์™€ Header์˜ ์ •๋กœ ์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์—”์ง„์œผ๋กœ์„œ ํ•˜์ดํผ๋ฏธ๋””์–ด
    • REST API๋ฅผ ๊ฐœ๋ฐœํ• ๋•Œ์—๋„ ๋‹จ์ˆœํžˆ Client ์š”์ฒญ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ด€๋ จ๋œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ Link ์ •๋ณด๊นŒ์ง€ ๊ฐ™์ด ํฌํ•จ ๋„์–ด์•ผ ํ•œ๋‹ค.๋ณด
    • ์ด๋Ÿฌํ•œ ์กฐ๊ฑด๋“ค์„ ์ž˜ ๊ฐ„์ถ˜ ๊ฒฝ์šฐ REST Ful ํ•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ์ด๋ฅผ REST API๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • URI
    • ์ธํ„ฐ๋„ท์—์„œ ํŠน์ • ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์†Œ๊ฐ’. ํ•ด๋‹น ๊ฐ’์€ ์œ ์ผ ํ•จ
  • URL
    • ์ธํ„ฐ๋„ท ์ƒ์—์„œ์˜ ์ž์›, ํŠน์ • ํŒŒ์ผ์ด ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ์‹๋ณ„ ํ•˜๋Š” ์ฃผ์†Œ
    • URL์€ URI์˜ ํ•˜์œ„ ๊ฐœ๋…
  • URI ์„ค๊ณ„์›์น™ (RFC-3986)
    • ์Šฌ๋ž˜์‹œ ๊ตฌ๋ถ„์ž(/)๋Š” ๊ณ„์ธต ๊ด€๊ฑ”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
    • URI ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋กœ(/)๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ํ•˜์ดํ”ˆ(-)์€ URI ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋ฐ‘์ค„(_)์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • URI ๊ฒฝ๋กœ์—๋Š” ์†Œ๋ฌธ์ž๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.
    • ํŒŒ์ผ ํ™•์žฅ์ž๋Š” URI์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์˜์กด์ ์ธ ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ๊ตฌํ˜„์— ์˜์กด์ ์ธ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์„ธ์…˜ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ Method๋ช…์„ ์ด์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ๋ช…์‚ฌ์— ๋‹จ์ˆ˜ํ˜• ๋ณด๋‹ค๋Š” ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ํ‘œํ˜„์€ ๋ณต์ˆ˜๋กœ ์‚ฌ์šฉ
    • ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์œผ๋กœ๋Š” ๋™์‚ฌ๋‚˜ ๋™์‚ฌ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๊ฒฝ๋กœ ๋ถ€๋ถ„ ์ค‘ ๋ณ€ํ•˜๋Š” ๋ถ€๋ถ„์€ ์œ ์ผํ•œ ๊ฐ’์œผ๋กœ ๋Œ€์ฒด ํ•œ๋‹ค.
    • CRUD ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š”๊ฒƒ์€ URI์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • URI Query Parameter ๋””์ž์ธ
      • URI ์ฟผ๋ฆฌ ๋ถ€๋ถ„์œผ๋กœ ์ปฌ๋ ‰์…˜ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด์„œ ํ•„ํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.
      • URI ์ฟผ๋ฆฌ๋Š” ์ปฌ๋ ‰์…˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํŽ˜์ด์ง€๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
    • API์— ์žˆ์–ด์„œ ์„œ๋ธŒ ๋„๋ฉ”์ธ์€ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž ํฌํƒˆ ์„œ๋ธŒ ๋„๋ฉ”์ธ์€ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค.

Spring Boot

  • Spring Boot๋Š” ๋‹จ์ˆœํžˆ ์‹คํ–‰๋˜๋ฉฐ, ํ”…๋กœ๋•์…˜ ์ œํ’ˆ ์ˆ˜์ค€์˜ ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • Spring Boot ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” Spring ๊ตฌ์„ฑ์ด ๊ฑฐ์˜ ํ•„์š” ํ•˜์ง€ ์•Š๋‹ค.

  • Spring Boot java -jar๋กœ ์‹คํ–‰ํ•˜๋Š” Java ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • ์ฃผ์š” ๋ชฉํ‘œ

    • Spring ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ๋น ๋ฅด๊ณ , ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ
    • XML ๊ตฌ์„ฑ ์š”๊ทœ์‚ฌํ•ญ์ด ์ „ํ˜€ ์—†์Œ
  • Spring Boot ์†Œ๊ฐœ

    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์ˆ˜ ์š”์†Œ๋“ค๋งŒ ๋ชจ์•„๋‘์—ˆ๋‹ค.
    • ๊ฐ„๋‹จํ•œ ์„ค์ •์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ์ปค์Šคํ…€์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ๋ฐ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค
    • ๋Œ€๊ทœ๋ชจํ”„๋กœ์ ํŠธ(์šด์˜ํ™˜๊ฒฝ)์— ํ•„์š”ํ•œ ๋น„ ๊ธฐ๋Šฅ์  ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค
    • ์˜ค๋žœ ๊ฒฝํ—˜์—์„œ ๋‚˜์˜ค๋Š” ์•ˆ์ •์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • Spring์—์„œ ๋ถˆํŽธํ•œ ์„ค์ •์ด ์—†์–ด์กŒ๋‹ค.(XML ์„ค์ • ๋“ฑ๋“ฑ)