Skip to content

sj7699/Web_Project_Berrygood

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

README

Berry-good

๋ชฉ์ฐจ


  • ํ”„๋กœ์ ํŠธ ๋ฐฐ๊ฒฝ
  • ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ
  • ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ
    • ํ”„๋ก ํŠธ์—”๋“œ
    • ๋ฐฑ์—”๋“œ
  • ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ
    • ์Šคํฌ๋ฆฐ์ƒท
    • ๊ฐœ๋ฐœ์ค‘ ์ด์Šˆ
    • ๊ฐœ์„ ์ 

ํ”„๋กœ์ ํŠธ ๋ฐฐ๊ฒฝ


ํŒ€์› ์ค‘ ํ•œ๋ช…์˜ ์นœ์ฒ™๋ถ„์ด ์ œ์ฃผ๋„์—์„œ ๋†์žฅ์„ ํ•˜์‹œ๋Š”๋ฐ, ํŒ๋งค๋ฅผ ์œ„ํ•œ ํ™ˆํŽ˜์ด์ง€๊ฐ€ ์—†์–ด์„œ ์•„์‰ฌ์šด ์ƒํƒœ์˜€์Œ. ๋”ฐ๋ผ์„œ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ณ  ์›ํ™œํ•œ ์ฃผ๋ฌธ ๋ฐ ํŒ๋งค ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ๊ณ„ํšํ•จ

๋†์žฅ์˜ ๋ฌผํ’ˆ(๊ทค, ๋ธ”๋ฃจ๋ฒ ๋ฆฌ, ํ•œ๋ผ๋ด‰)์„ ํŒ๋งคํ•˜๋ฉฐ ์ด์— ๋Œ€ํ•œ ๋ฌธ์˜๋‚˜ ๋†์žฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํ™ˆํŽ˜์ด์ง€๋ฅผ ๊ฐœ๋ฐœ ์˜ˆ์ •

ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ


HTML, JavaScript, PHP ๋ฅผ ํ†ตํ•œ ์›น ์„œ๋ฒ„ ๊ตฌ์ถ•

๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์ง€์›๊ฐ€๋Šฅํ•œ rest api ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ•

๋ณด๊ธฐ์ข‹๊ณ  ์ ‘๊ทผ์„ฑ์ด ์ข‹์€ UI, ์œ ๊ธฐ์ ์ธ ํŽ˜์ด์ง€ ์ด๋™, ์‚ฌ์šฉ์ž ์œ„์ฃผ์˜ ์ธํ„ฐํŽ˜์ด์Šค

๋ณด๊ธฐ ์ข‹์€ UI๋ฅผ ๊ฐ€์ง„ ๋ฉ”์ธํŽ˜์ด์ง€ ๊ฐœ์„ค

๋†์žฅ์— ๊ด€ํ•œ ์ •๋ณด(์ฐพ์•„์˜ค์‹œ๋Š” ๊ธธ, ์ „ํ™” ๋ฒˆํ˜ธ, ๊ณ„์ขŒ ๋ฒˆํ˜ธ)๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์†Œ๊ฐœ ํŽ˜์ด์ง€ ๊ฐœ์„ค

ํ˜„์žฌ ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ์— ๋Œ€ํ•œ ๋ชฉ๋ก๊ณผ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ƒํ’ˆ ํŽ˜์ด์ง€ ๊ฐœ์„ค

ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ์œ ์ €์ •๋ณด ๋ณ€๊ฒฝ ๊ฐ™์€ ์œ ์ €์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํšŒ์› ๋ชจ๋ธ ๊ฐœ๋ฐœ

๊ด€๋ฆฌ์ž์™€ ์ผ๋ฐ˜์œ ์ €์˜ ์—ญํ•  ๋ถ„๋ฆฌ

์‚ฌ์šฉ์ž๋ผ๋ฆฌ ํ˜น์€ ์šด์˜์ž์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์‹œํŒ ๊ฐœ๋ฐœ

SQL Injection, Password ์œ ์ถœ, Input Validation ๋Œ€๋น„

์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ฃผ๋ฌธ์ •๋ณด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ


ํ”„๋ก ํŠธ์—”๋“œ


์‹ ํƒœ์› ์ •ํ˜„์ˆ˜ ์œ ์„ฑ๋ฏผ

๊ตฌํ˜„ํ•œ View

  • ๋ฉ”์ธ ํŽ˜์ด์ง€
    • ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐฉ์นจ
  • ์†Œ๊ฐœ ํŽ˜์ด์ง€
  • ์ œํ’ˆ ํŽ˜์ด์ง€
  • ์ œํ’ˆ ๊ตฌ๋งค ํŽ˜์ด์ง€
  • ์ฃผ๋ฌธ ํŽ˜์ด์ง€(+์žฅ๋ฐ”๊ตฌ๋‹ˆ)
  • ๋กœ๊ทธ์ธ ํŒ์—…์ฐฝ
  • ๋งˆ์ดํŽ˜์ด์ง€
  • ๊ฒŒ์‹œํŒ
    • Q&A ๊ฒŒ์‹œํŒ
    • ๊ณต์ง€์‚ฌํ•ญ ๊ฒŒ์‹œํŒ

๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ

  • Navigation bar

    • ์™ผ์ชฝ ํ™ˆ ์•„์ด์ฝ˜ ํด๋ฆญ ์‹œ ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ด
    • stickyํ•˜๊ฒŒ ๊ณ ์ •ํ•˜์—ฌ ์Šคํฌ๋กค์‹œ์—๋„ ๋ณผ ์ˆ˜ ์žˆ์Œ
    • ์†Œ๊ฐœ, ์ œํ’ˆ, ๊ฒŒ์‹œํŒ ํด๋ฆญ์‹œ ๊ฐ ํŽ˜์ด์ง€๋กœ ์ด๋™
    • ๊ฒŒ์‹œํŒ ๋ฉ”๋‰ด hover์‹œ dropdown ๋ฉ”๋‰ด ๋‚˜ํƒ€๋‚จ
    • ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ๊ฐ€๋Šฅ
  • ๋ฉ”์ธ ํŽ˜์ด์ง€

    • ์Šฌ๋ผ์ด๋“œ ์‚ฌ์ง„(3์ดˆ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉฐ ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์‚ฌ์ง„ ๋„˜๊ธฐ๊ธฐ ๊ฐ€๋Šฅ)
    • BEST ์ƒํ’ˆ ํด๋ฆญ์‹œ ์ œํ’ˆ ๊ตฌ๋งค ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ
    • ์ „์ฒด ์ƒํ’ˆ ๋ณด๊ธฐ ํด๋ฆญ์‹œ ์ œํ’ˆ ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ
  • ๋ชจ๋“  ํŽ˜์ด์ง€ ํ•˜๋‹จ

    • ์นด์นด์˜ค api ์—ฐ๊ฒฐํ•˜์—ฌ ์นด์นด์˜ค ๋งต ๋ถˆ๋Ÿฌ์˜ด - ๋†์žฅ ์œ„์น˜(์˜ค์‹œ๋Š” ๊ธธ)
    • ์ „ํ™”๋ฒˆํ˜ธ, ๊ณ„์ขŒ ์ •๋ณด, ์ €์ž‘๊ถŒ, ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐฉ์นจ
    • ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐฉ์นจ ํด๋ฆญ์‹œ ํŒ์—…์ฐฝ์œผ๋กœ ๊ฐœ์ธ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅ
  • ์†Œ๊ฐœ ํŽ˜์ด์ง€

    • ๋†์žฅ ์†Œ๊ฐœ ๋™์˜์ƒ ์ธ๋„ค์ผ ํด๋ฆญ์‹œ ์žฌ์ƒ
  • ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

    • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

      • ๋กœ๊ทธ์ธ์ฐฝ์€ ํŒ์—…์ฐฝ์œผ๋กœ ๊ตฌํ˜„ โ†’ ๋กœ๊ทธ์ธ ์ฐฝ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฐฐ๊ฒฝ์€ Blur ์ฒ˜๋ฆฌ
      • Modal ๋ทฐ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ•˜์˜€์œผ๋ฉฐ, ๋‹ค๋ฅธ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ ํ™”๋ฉด๋„ ๋งŒ๋“ค์–ด๋ดค์Œ(๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ๋„ค์ด๋ฒ„, ์นด์นด์˜คํ†ก โ‡’ ์‹ค์ œ ์ž‘๋™X)
      • ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™
    • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

      • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ์›€์ง์ด๋Š” ์ด๋ชจํ‹ฐ์ฝ˜(์• ๋‹ˆ๋ฉ”์ด์…˜) ๊ตฌํ˜„
      • ์•„์ด๋””/ ๋น„๋ฐ€๋ฒˆํ˜ธ/ ์ด๋ฆ„/ ์ „ํ™”๋ฒˆํ˜ธ/ ์ด๋ฉ”์ผ โ†’ Regular expression์œผ๋กœ Validation ๊ตฌํ˜„
      • Regular expression์œผ๋กœ Validation ๊ตฌํ˜„ํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ JavaScript๋ฅผ ์ด์šฉํ•œ ๊ฒฝ๊ณ  ๊ตฌํ˜„
      • ์ด๋ฉ”์ผ ์„ ํƒ ๋ถ€๋ถ„ dropdown ๋ฉ”๋‰ด ๊ตฌํ˜„
  • ๊ฒŒ์‹œํŒ ๊ตฌํ˜„

    • ๊ณต์ง€์‚ฌํ•ญ ๊ฒŒ์‹œํŒ
      • ์„œ๋ฒ„ API(method: GET)๋ฅผ ์ด์šฉํ•ด ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ•˜์˜€์Œ
      • ๊ด€๋ฆฌ์ž๋งŒ์ด ๊ณต์ง€์‚ฌํ•ญ ๊ฒŒ์‹œํŒ์— ๊ธ€์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜ ์œ ์ €์ธ์ง€ ๊ด€๋ฆฌ์ž์ธ์ง€๋Š” โ€˜JWTโ€™ ํ† ํฐ์„ ์ด์šฉํ•ด์„œ ํŒ๋‹จํ•จ.
      • ์ผ๋ฐ˜ ์œ ์ €๊ฐ€ ๊ธ€ ๋“ฑ๋ก์„ ํ•˜๋ ค๊ณ ํ• ์‹œ ์ ‘๊ทผ๋œ ์ œํ•œ์ด๋ผ๋Š” Alert ํ‘œ์‹œ
      • ๊ฒŒ์‹œํŒ ๋‚ด์šฉ์œผ๋กœ๋Š” ๋ฒˆํ˜ธ, ์ œ๋ชฉ, ๊ธ€์“ด์ด, ์ž‘์„ฑ์ผ, ์กฐํšŒ๊ฐ€ ์žˆ์Œ
      • ๊ธ€์„ ์กฐํšŒํ• ์‹œ ์กฐํšŒ์ˆ˜๊ฐ€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๊ฒŒ๋” ๊ตฌํ˜„(์„œ๋ฒ„์—์„œ ๊ตฌํ˜„)
      • ๊ธ€ ์ž‘์„ฑ์‹œ ๊ณต์ง€์‚ฌํ•ญ ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ api Body์— ์‹ค์–ด JWT๊ณผ ํ•จ๊ป˜ POSTํ•œ๋‹ค.
    • Q&A ๊ฒŒ์‹œํŒ
      • ์„œ๋ฒ„ API(method: GET)๋ฅผ ์ด์šฉํ•ด ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ•˜์˜€์Œ
      • ๊ด€๋ฆฌ์ž ๋ฐ ์ผ๋ฐ˜ ์œ ์ €๊ฐ€ ์ž์œ ๋กญ๊ฒŒ Q&A๋ฅผ ๋‹ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, JWT๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ์ด ๋˜์–ด์žˆ๋Š” ์ƒํƒ ์ง€ ํ™•์ธ
      • โ€˜๊ด€๋ฆฌ์žโ€™๋งŒ์ด Q&A๊ฒŒ์‹œํŒ์— ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ๋Š” ๋Œ“๊ธ€์— โ€œ์‚ญ์ œโ€ ๋ฒ„ํŠผ์ด ๋ณด์ธ๋‹ค.(์ผ๋ฐ˜ ์œ ์ €๋Š” ์‚ญ์ œ ๋ฒ„ํŠผ์ด ์•ˆ๋ณด์ž„)
      • ๊ธ€ ์„ธ๋ถ€์‚ฌํ•ญ์—๋Š” ๋Œ“๊ธ€์˜ ์ด ๊ฐฏ์ˆ˜๊ฐ€ ๋ณด์ด๋ฉฐ ๊ด€๋ฆฌ์ž๋Š” ๋Œ“๊ธ€์„ ์ž์œ ๋กญ๊ฒŒ ์‚ญ์ œ ๊ฐ€๋Šฅ
  • ์ƒํ’ˆ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ ๊ตฌํ˜„

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐฐ์—ด์— ํ•ด๋‹น ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ณด๊ด€.

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„ ์žˆ์œผ๋ฉด ๊ฐ€์ ธ์™€์„œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

  • ํ† ํฐ์„ ๋ฐ”ํƒ•์œผ๋กœ ์œ ์ € ์ •๋ณด ๊ฐ€์ ธ์™€์„œ ์ฃผ๋ฌธ์ž ์ •๋ณด ๋ฏธ๋ฆฌ ์ž…๋ ฅ .

  • ์ฃผ๋ฌธํŽ˜์ด์ง€๋กœ ์ด๋™ ์‹œ ํ† ํฐ์„ ๋ณด๋‚ด์„œ ์œ ํšจํ•œ ํ† ํฐ์ด๋ฉด ํ•ด๋‹น ์œ ์ € ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ฃผ๋ฌธ์ž ์ •๋ณด์— ๋ฏธ๋ฆฌ ์ž…๋ ฅ. ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ ‘๊ทผ ์ œํ•œ.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ƒํ’ˆ์˜ ์ •๋ณด ์ถœ๋ ฅ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— GET ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์ƒํ’ˆ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ด

  • ๊ฐ€์ ธ์˜จ ์ƒํ’ˆ ์ •๋ณด๋“ค์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐ˜๋ณต๋ฌธ๊ณผ createElement๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒํ’ˆ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑ ํ›„ body์— ์ถ”๊ฐ€ํ•จ.

  • ์ˆ˜๋ น์ธ ์ •๋ณด ๋ฐ ์ฃผ์†Œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒํ’ˆ ์ฃผ๋ฌธ ๊ตฌํ˜„

  • ์ˆ˜๋ น์ธ ์ •๋ณด (์ด๋ฉ”์ผ, ํœด๋Œ€์ „ํ™” ๋ฒˆํ˜ธ)๋Š” ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ํ˜•์‹์— ๋งž์ง€ ์•Š์œผ๋ฉด ๊ฒฝ๊ณ ์ฐฝ์„ ๋„์›€.

  • ํ˜•์‹์— ๋งž๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ์ฃผ๋ฌธ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ฃผ๋ฌธ์ž ์ •๋ณด, ์ˆ˜๋ น์ธ ์ •๋ณด, ์ฃผ๋ฌธ ์ƒํ’ˆ ์ •๋ณด๋ฅผ POST ์š”์ฒญ์„ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„.

  • ๋‚˜์˜ ์ฃผ๋ฌธ ์ƒํ’ˆ ๋ฐ ๋ฐฐ์†ก ์ƒํƒœ ํ™•์ธ

  • ๋งˆ์ดํŽ˜์ด์ง€๋กœ ์ด๋™ ์‹œ ๋‚˜์˜ ์ฃผ๋ฌธ์ •๋ณด์™€ ๋ฐฐ์†กํ˜„ํ™ฉ ํŒŒ์•… ๊ฐ€๋Šฅ.

๋ฐฑ์—”๋“œ


์ด์ƒ์žฌ

๊ตฌํ˜„ ํ™˜๊ฒฝ

  • AWS EC2 LINUX AMI
  • PHP8.1 + APACHE 2.4 + MARIA DB

DB ์„ค๊ณ„

  • ์ตœ๋Œ€ํ•œ ์ •๊ทœํ™”์‹œ์ผœ ์ค‘๋ณต์„ ์ œ๊ฑฐ

  • ERD

    erd2.PNG

PHP ๊ฐ์ฒด์ง€ํ–ฅ

  • ํ˜ธ์ถœํ•˜๋Š” API ๊ธฐ๋Šฅ์„ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“ˆํ™” / URL ๋ถ„๋ฆฌ

  • MVCํŒจํ„ด์—์„œ Controller + View ์™€ Model๋กœ ๋ถ„๋ฆฌ

    ํŠธ๋ฆฌ๊ตฌ์กฐ.PNG

API ๊ตฌํ˜„

  • ์ฃผ๋ฌธ,์ƒํ’ˆ,์œ ์ €,๊ฒŒ์‹œํŒ CRUD
  • ์ฃผ๋ฌธ์‹œ ๋ฉ”์ผ ์ „์†ก( AWS EC2ํ™˜๊ฒฝ์—์„œ๋Š” smtpํฌํŠธ๋ฅผ ๋ง‰์•„ ์‚ฌ์šฉ๋ถˆ๊ฐ€)
  • Postman Agent๋ฅผ ํ†ตํ•œ ํ…Œ์ŠคํŒ…

ํ”„๋ก ํŠธ์—”๋“œ์™€์˜ ํ†ต์‹ 

  • JSON์„ ์ด์šฉํ•˜์—ฌ response body์— ์‘๋‹ต

  • JWT๋ฅผ ํ†ตํ•ด ํ”„๋ก ํŠธ์—”๋“œ์˜ ๊ถŒํ•œ ํ™•์ธ

  • API๋ช…์„ธ์„œ๋ฅผ ํ†ตํ•œ ํ˜‘์—…

    API๋ช…์„ธ.PNG

๋ณด์•ˆ

  • SQL INJECTION์„ ๋Œ€๋น„ํ•˜์—ฌ preparedstatement ๋ฅผ ํ†ตํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ bind์‹œํ‚ด
  • JWT๋ฅผ ํ†ตํ•ด ์žฆ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋…ธ์ถœ๊ณผ DB ์ ‘๊ทผ ์ตœ์ ํ™”
  • JWT ํ† ํฐ ์„œ๋ช… ๋งŒ๋ฃŒ๊ธฐํ•œ ID์กด์žฌ๊ฒ€์ฆ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ DB์— ํ•ด์‰ฌํ™”ํ•˜์—ฌ ์ €์žฅํ•จ (DB๊ฐ€ ๊ณต๊ฒฉ๋ฐ›์•„๋„ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์œ ์ถœ๋˜์ง€์•Š์Œ)
  • ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ์„ ํ†ตํ•œ ์˜ˆ์ƒ์™ธ์˜ ์ž…๋ ฅ์„ ํ†ตํ•œ ๊ณต๊ฒฉ ๋ฐฉ์ง€
  • PHP ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™” ์„œ๋ฒ„ ์—๋Ÿฌ๋ฉ”์‹œ์ง€ ๋…ธ์ถœ ์ตœ์†Œํ™”
  • ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ƒ์„ฑ์‹œ 2์ฐจ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•„์š”
  • Login Log๋ฅผ ๊ธฐ๋กํ•˜๋ฏ€๋กœ์จ ๋น„์ •์ƒ์ ์ธ ๋กœ๊ทธ์ธ ํ™•์ธ ๊ฐ€๋Šฅ

์–ด๋ ค์› ๋˜ ์ 

  • ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜
  • ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์“ฐ์ง€ ์•Š์•„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์†์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ–ˆ๋˜ ์ 
  • JWT๋ฅผ Set Cookie๋ฅผ ํ†ตํ•ด ๋‹ด๊ณ ์ž ํ–ˆ์œผ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ์ •์ฑ…์ด ๋ฐ”๋€Œ์–ด https๋ฅผ ํ†ตํ•ด์„œ Cookie Secure์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ samesite์ •์ฑ…์— ์–ด๊ธ‹๋‚˜์ง€ ์•Š๊ฒŒ๋จ ๋”ฐ๋ผ์„œ ๋„๋ฉ”์ธ์„ ๋“ฑ๋กํ•ด์•ผํ–ˆ๊ณ  ssl์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ https๋กœ ํ†ต์‹ ์— ์–ด๋ ค์›€์„ ๊ฒช์Œ
  • Apache RewirteEngine์„ ํ†ตํ•ด rest api์— ๋งž๋Š” url์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์Œ
  • ์ƒํ’ˆ ๋ฐ ์ฃผ๋ฌธ์€ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋™์ ์œผ๋กœ ๋ณ€ํ•ด์„œ html๋งŒ์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ ์–ด๋ ค์› ์Œ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด์„œ html์— ๋„ฃ์–ด์ฃผ์—ˆ์Œ

ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ


์Šคํฌ๋ฆฐ์ƒท ๋ฐ ์„ค๋ช…

(1) ๋ฉ”์ธ ํŽ˜์ด์ง€

Untitled

Untitled

์Šฌ๋ผ์ด๋“œ ํ™”๋ฉด : ๋ฉ”๋‰ด๋ฐ” ์•„๋ž˜ ์Šฌ๋ผ์ด๋“œ ์‚ฌ์ง„

Untitled

Untitled

๋ฉ”์ธํŽ˜์ด์ง€ ํ•˜๋‹จ์— ๋ฒ ์ŠคํŠธ ์ƒํ’ˆ ํ‘œ์‹œ

๋ˆ„๋ฅด๋ฉด ์ œํ’ˆ ๊ตฌ๋งค ํŽ˜์ด์ง€๋กœ ์ด๋™

ํ•˜๋‹จ ์˜ค์‹œ๋Š” ๊ธธ, ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐฉ์นจ ํ™•์ธ ๊ฐ€๋Šฅ

(2) ์†Œ๊ฐœ ํŽ˜์ด์ง€

Untitled

์†Œ๊ฐœ ์˜์ƒ : ์ธ๋„ค์ผ ํด๋ฆญ์‹œ ๋†์žฅ ์˜์ƒ ์žฌ์ƒ

Untitled

Untitled

์ƒ์„ธํ•œ ์†Œ๊ฐœ ๋ฐ ํ•˜๋‹จ ๊ณ ์ • ๋ฌธ๊ตฌ

(3) ์ œํ’ˆ ํŽ˜์ด์ง€

Untitled

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ƒํ’ˆ ์ถœ๋ ฅ

ํด๋ฆญ ์‹œ ๊ตฌ๋งค ํŽ˜์ด์ง€๋กœ ์ด๋™

(4) ์ œํ’ˆ ๊ตฌ๋งค ํŽ˜์ด์ง€

Untitled

Untitled

๊ตฌ๋งค ์ˆ˜๋Ÿ‰ ์„ ํƒ ๋ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๊ตฌ๋งค ๊ธฐ๋Šฅ.

ํ•˜๋‹จ ์ƒํ’ˆ ์ƒ์„ธ ์„ค๋ช….

(5) ์ฃผ๋ฌธ ํŽ˜์ด์ง€

Untitled

Untitled

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ์ˆ˜๋ น์ธ ์ •๋ณด ์ž…๋ ฅ.

(6) ์ฃผ๋ฌธ ์™„๋ฃŒ ํŽ˜์ด์ง€

Untitled

Untitled

์ฃผ๋ฌธ ์ •๋ณด ์ถœ๋ ฅ.

(7) ๊ณต์ง€์‚ฌํ•ญ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-12-21 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.46.06.png

๊ณต์ง€์‚ฌํ•ญ ํŽ˜์ด์ง€

(7 - 1) ๊ณต์ง€์‚ฌํ•ญ ๋“ฑ๋ก ํŽ˜์ด์ง€

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-12-21 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.46.56.png

(8) Q&A ๊ฒŒ์‹œํŒ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-12-21 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.47.29.png

(8-1) Q&A ๊ฒŒ์‹œํŒ ์ƒ์„ธ ํŽ˜์ด์ง€

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-12-21 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.48.02.png

(9) ๋กœ๊ทธ์ธ ํŒ์—…์ฐฝ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-12-21 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.49.27.png

(10) ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-12-21 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 4.49.58.png

(11) ๋งˆ์ด ํŽ˜์ด์ง€

-์ฃผ๋ฌธ ์กฐํšŒ

-๋ฌธ์˜ํ•˜๊ธฐ

(12) ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€

๊ฐœ๋ฐœ์ค‘ ์ด์Šˆ

1) CORS ์ด์Šˆ

-๋‚ด์šฉ

๋กœ์ปฌ์—์„œ API ์ „์†ก์ด ์•ˆ๋˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐพ์•„๋ณด๋‹ˆ ํฌ๋กฌ์˜ ๋ณด์•ˆ์„ฑ๋•Œ๋ฌธ์— ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์—์„œ ์ฐจ๋‹จํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์–ด์„œ CORS ๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์ง€์†ํ•ด์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

-ํ•ด๊ฒฐ๋ฐฉ์•ˆ ๋ฐ ์„ฑ๊ณผ

ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด(MAC๊ธฐ์ค€) ํฌ๋กฌ์˜ Security๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๊ณ  Apache์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์—ด์–ด API ํ†ต์‹ ์„ ์ง„ํ–‰ํ–ˆ๊ณ  ๊ทธ ๊ฒฐ๊ณผ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

2) ์ฟ ํ‚ค ๊ด€๋ จ ์ด์Šˆ

-๋‚ด์šฉ

์ฟ ํ‚ค๋ผ๋Š” ๊ฐœ๋…์ด ์ƒ์†Œํ–ˆ๊ธฐ๋•Œ๋ฌธ์—, ์ฒ˜์Œ์—๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„ ์ฟ ํ‚ค๋ฅผ ์„œ๋กœ ๊ณ„์†ํ•ด์„œ ์ง์ ‘ ์ฃผ๊ณ ๋ฐ›๋Š” ํ˜•ํƒœ๋กœ ์ง„ํ–‰๋˜๋Š”์ค„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰๋˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ €์ธก์—์„œ ์ด๋ฅผ ์ €์žฅํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์ชฝ์€ ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š”๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Samesite ์ •์ฑ…์„ ์ง€์ผœ์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ๋„๋ฉ”์ธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋ ค๋ฉด Secure์†์„ฑ์„ ์‚ฌ์šฉํ•œ https์—์„œ ์ง„ํ–‰๋˜์–ด์•ผํ•˜๋Š”๋ฐ, httpsํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” ๋”ฐ๋กœ ๋„๋ฉ”์ธ์ฃผ์†Œ๊ฐ€ ์กด์žฌํ•ด์•ผํ–ˆ๊ณ  ์ƒ๊ฐ๋ณด๋‹ค ๊นŒ๋‹ค๋กœ์šด ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

-ํ•ด๊ฒฐ๋ฐฉ์•ˆ ๋ฐ ์„ฑ๊ณผ

http๋กœ ํ†ต์‹ ์„ ํ•˜๋˜, JWT๋ฅผ ๋ฐ”๋””์— ์‹ค์–ด์„œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์ธก์—์„œ ๋ณด๋‚ธ JWT๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋กœ์ง์„ ์งœ์„œ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ทธ๋ฆฌ๊ณ  ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ JWT ์ƒ์„ฑ ๋ฐ ์ €์žฅ๊นŒ์ง€ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

3) ๋ฉ”์ผ ๊ด€๋ จ ์ด์Šˆ

-๋‚ด์šฉ

์œ ์ €๊ฐ€ ์ฃผ๋ฌธ์„ ์™„๋ฃŒํ• ๊ฒฝ์šฐ ํ•ด๋‹น ์ฃผ๋ฌธ์— ๊ด€ํ•œ ๋‚ด์šฉ(์ƒํ’ˆ์ •๋ณด, ์ฃผ๋ฌธ๋ฒˆํ˜ธ, ์ฃผ๋ฌธ์ผ์‹œ, ์ˆ˜๋ น์ž์ •๋ณด)๊ฐ€ PHPMailer๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ”์ผ์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ–ˆ๊ณ  ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™ํ•˜๋Š”๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฐํฌ ํ›„ ๋ฉ”์ผ์ด ์ „์†ก๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋Š” AWS EC2์ •์ฑ…์ƒ SMTP ํฌํŠธ์— ์˜ํ•œ ์•„์›ƒ๋ฐ”์šด๋“œ๋ฅผ ๋ง‰์•˜๊ธฐ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

-ํ•ด๊ฒฐ๋ฐฉ์•ˆ ๋ฐ ์„ฑ๊ณผ

AWS SES๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์„œ ip๋‚˜ ๋„๋ฉ”์ธ์„ ๋“ฑ๋กํ•˜๋ฉด ํฌํŠธ์™€ ๋ฉ”์ผ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜๋Š” ๋‹ค๋ฅธ ํ˜ธ์ŠคํŒ…, ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ์ƒˆ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ์ €ํฌ ํ™˜๊ฒฝ์€ ์‹ค์‚ฌ์šฉ์„ ์œ„ํ•œ ํ™˜๊ฒฝ์ด ์•„๋‹ˆ์—ˆ๊ธฐ์— AWS SES๋ฅผ ๋“ฑ๋กํ–ˆ์œผ๋‚˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„ ์ 

1)(๋งˆ์ดํŽ˜์ด์ง€)ํšŒ์› ์ •๋ณด ์ˆ˜์ • ๊ธฐ๋Šฅ, ํšŒ์› ํƒˆํ‡ด ๊ธฐ๋Šฅ

2)html, css, js, php๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จ์ „ํ•œ ์›น์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋‹ค๋ณด๋‹ˆ ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง.

3)์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ด์šฉ

  • ํŒ€์›๊ณผ ํ˜‘์—…์„ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ, ๊ฐ์ž ์ง„ํ–‰ํ•œ ํŒŒ์ผ๋“ค์„ merge ํ•˜๋Š” ์ผ์ด ์žฆ์•˜๋Š”๋ฐ, ์ด๋•Œ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ๋˜์–ด์žˆ์–ด ๋งค์šฐ ๋ถˆํŽธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ์™€ ์ƒ๋Œ€ ๊ฒฝ๋กœ์˜ ๊ฐœ๋…์„ ๋ณด๋‹ค ํ™•์‹คํžˆ ํŒŒ์•…ํ•˜๊ณ  ์ด์šฉํ–ˆ๋‹ค๋ฉด ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํ•ฉ์น ์ˆ˜ ์žˆ์ง€ ์•Š์•˜์„๊นŒ๋ž€ ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค

4)API ๋™๊ธฐ/๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

  • ํ•œ ํŽ˜์ด์ง€์—๋„ API๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์—ฎ์–ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋‹ค๋ณด๋‹ˆ, ์‘๋‹ต์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ฝ”๋“œ ๊ผฌ์ž„(?)์ด ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1๋ฒˆ api๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ ๊ฒฐ๊ณผ๋ฅผ 2๋ฒˆ api๋ฅผ ํ†ตํ•ด sorting์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, 1๋ฒˆ api์˜ ์‘๋‹ต๊ฐ’์ด ์˜ค๊ธฐ๋„์ „์— ์ด๋ฏธ 2๋ฒˆ api๊ฐ€ request๋ฅผ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— api๊ฐ„ asyn/syn ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์„œ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ๋” ์ข‹์•˜์„๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

5)RESTFUL์„ ์ง€ํ‚ค์ง€ ๋ชปํ•จ

  • REST API๋Š” URL์„ ํ†ตํ•ด ์ž์›์„ ๋ช…์‹œํ•˜๊ณ  HTTP METHOD๋ฅผ ํ†ตํ•ด ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ ํ™•์žฅ์ž๋ช…์ด ๋‚˜ํƒ€๋‚˜๋ฉด ์•ˆ๋˜๋ฉฐ ์ž์›์˜ ๊ด€๊ณ„ ๋˜ํ•œ URL์„ ํ†ตํ•ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. APACHE์˜ REWRITE ENGINE์„ ํ†ตํ•ด URL์„ ํŒŒ์‹ฑํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์ž‘๋™ํ•˜์ง€์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ API์˜ ๋ช…์„ธ๊ฐ€ ๊ธธ์–ด์ง€๊ฒŒ ๋˜์—ˆ๊ณ  ํ˜‘์—…์—์„œ ํ”„๋ก ๋“œ์—”๋“œ๋ถ„๋“ค์ด API๋ช…์„ธ๋ฅผ ์ฐธ์กฐํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors