Skip to content

mjkkcalb/ticketing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽŸ๏ธTicketing


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

  • ํ”„๋กœ์ ํŠธ ๋ช…์นญ

    • Ticketing - ๋ฌธํ™” ์˜ˆ์•ฝ ์„œ๋น„์Šค ์•ฑ
  • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

    • โ€˜Ticketingโ€™์€ ์„œ์šธ์—์„œ ์šด์˜ํ•˜๋Š” ๋ฌธํ™” ์ƒํ™œ๋“ค์— ๋Œ€ํ•œ ์˜ˆ์•ฝ์„ ๋•๋Š” ์‚ฌ์ดํŠธ ์ž…๋‹ˆ๋‹ค.

      ์„œ์šธ์‹œ์—์„œ ์šด์˜ํ•˜๋Š” ๋ฌธํ™” ์ƒํ™œ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์›ํ•˜๋Š” ํ‹ฐ์ผ“์— ๋Œ€ํ•œ ์˜ˆ์•ฝ๊ณผ ๊ฒฐ์ œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ์„ ์ • ์ด์œ 

    • ๋ฌธํ™” ์ƒํ™œ์— ๋Œ€ํ•œ ์˜ˆ์•ฝ ์‚ฌ์ดํŠธ ๊ตฌํ˜„ ๋ฐ ๊ฒฐ์ œ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ ์ž ๊ตฌ์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
    • ๊ฒฐ์ œ ์‚ฌ์ดํŠธ์˜ ๊ฒฝ์šฐ ์‹ค์ œ ๊ฒฐ์ œ๊นŒ์ง€ ๊ตฌํ˜„ํ•˜๊ธฐ์—๋Š” ๋‹ค์†Œ ์‹œ๊ฐ„๊ณผ backend ์ง€์‹์ด ๋ถ€์กฑํ•˜์—ฌ ๊ฒฐ์ œ ํŽ˜์ด์ง€ ๋ฐ ๊ฒฐ์ œ ๋ฐ์ดํ„ฐ ์ €์žฅ์œผ๋กœ๋งŒ ๊ตฌ์ƒ.
  • ๐ŸŒŸํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

    1. ๊ณต๊ณต ๋ฐ์ดํ„ฐ API ๋ฅผ ์—ฐ๊ฒฐํ•ด ์„œ์šธ์‹œ ๋ฌธํ™” ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ.
    2. ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๊ฒ€์ƒ‰ ๋ฐ ๋ฐ์ดํ„ฐ ๋‚ ์งœ์— ๋”ฐ๋ฅธ ์ง„ํ–‰ ์ค‘, ์ง„ํ–‰ ์ข…๋ฃŒ ํ‘œ์‹œ ์ถœ๋ ฅ.
    3. ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ๊ณผ ๊ฒฐ์ œ ์ฐฝ(์‹ค์ œ ๊ฒฐ์ œ๊ฐ€ ์•„๋‹Œ ์„ ํƒ ๊ธฐ๋Šฅ๋งŒ ๊ฐ€๋Šฅ) ๊ธฐ๋Šฅ ๊ตฌํ˜„.
    4. ๊ฒฐ์ œ ์‹œ ๊ฒฐ์ œ ๋‚ด์—ญ๊ณผ ์˜ˆ์•ฝ๋œ ํ‹ฐ์ผ“ ํ™•์ธ ํŽ˜์ด์ง€๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก.
  • ๊ณ ๋ ค์‚ฌํ•ญ
๊ธฐ์ˆ  ๋‚ด์šฉ
Frontend - ์–ธ์–ด: JavaScript (React)
- ํ”„๋ ˆ์ž„์›Œํฌ: React.js
- ๋ชจ๋“ˆํ™”๋œ CSS์ธ module.css ์‚ฌ์šฉ
- ๋ผ์šฐํŒ… : React Router ์‚ฌ์šฉ
Backend - Node.js, Express, Axios ํ™œ์šฉํ•œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ
- ์—”๋“œํฌ์ธํŠธ, GET ๋ฐ POST ๋ฉ”์†Œ๋“œ ์ดํ•ด
Data-Base - mongoDB ์—ฐ๊ฒฐ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ
- CORS ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ต์‹  ์›ํ™œํ•˜๊ฒŒ
- Open API ์‚ฌ์šฉ๋ฒ• ์ˆ™์ง€ ๋ฐ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ํ›„ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ณ„ํš
  • ํŽ˜์ด์ง€๋ณ„ ํ•ต์‹ฌ๊ธฐ๋Šฅ
ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ
๋กœ๊ทธ์ธ - ํšŒ์›๊ฐ€์ž…
- ๋กœ๊ทธ์ธ ํ™•์ธ
- mongoDB ์—ฐ๊ฒฐ
๋ฉ”์ธ - ์„œ์šธ์‹œ ๊ณต๊ณต ๋ฌธํ™” ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
- ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ํ•„ํ„ฐ ์ ์šฉ
- ํ˜„์žฌ ๋‚ ์งœ ๊ธฐ์ค€ ์ง„ํ–‰์˜ˆ์ •, ์ง„ํ–‰์ค‘, ์ง„ํ–‰ ์ข…๋ฃŒ ํ™•์ธ
- ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
- ์˜ˆ์•ฝ ๊ฐ€๋Šฅ, ์ข…๋ฃŒ ์ด๋ฒคํŠธ ์ฒดํฌ ์‹œ ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅ
- ์ข…๋ฃŒ๋œ ์ด๋ฒคํŠธ ์˜ˆ์•ฝ ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑ
์žฅ๋ฐ”๊ตฌ๋‹ˆ - ์ €์žฅ๋œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
- ์‚ญ์ œ ๋ฒ„ํŠผ
- ๊ฒฐ์ œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๊ฒฐ์ œ์ฐฝ ์ด๋™
- ๊ฒฐ์ œ ์‹œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ ์ž๋™ ์‚ญ์ œ
๊ฒฐ์ œํŽ˜์ด์ง€ - mongoDB์— ์ €์žฅ๋œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
- ํ•„์ˆ˜ ์ž‘์„ฑ์นธ(์ด๋ฆ„, ํœด๋Œ€์ „ํ™”, ์ด๋ฉ”์ผ) ๋ฏธ์ž…๋ ฅ ์‹œ ๊ฒฝ๊ณ  ์•Œ๋ฆผ
- ๊ฒฐ์ œ ๋ฐฉ์‹ ์„ ํƒ
- ๊ฒฐ์ œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๊ฒฐ์ œ ์‹œ๊ฐ„ ๋ฐ ๊ฒฐ์ œ ๋ฐฉ์‹ ์ €์žฅ
๋งˆ์ดํŽ˜์ด์ง€ - ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ ํƒ ๋ฐ ์ˆ˜์ •
- ๋กœ๊ทธ์•„์›ƒ
- ๊ฒฐ์ œ ๋‚ด์—ญ ํ™•์ธ
- ์˜ˆ์•ฝ ๋‚ด์—ญ ํ™•์ธ
- ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ ํ™•์ธ(๋ฏธ์ž‘์—…)

๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

๊ธฐ์ˆ  ๊ฐœ๋ฐœํ™˜๊ฒฝ
FrontEnd
BackEnd
Design
Tools

์ฃผ์š”๊ธฐ๋Šฅ

  • ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ
  • ๋ฌธํ™” ๋ฐ์ดํ„ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ฒ€์ƒ‰ ๋ฐ ์ง„ํ–‰๋ณ„ ์ƒํƒœ ํ™•์ธ
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ฒฐ์ œ ์‹œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ฒฐ์ œ ์ •๋ณด, ์˜ˆ์•ฝ ํ‹ฐ์ผ“ ํ™•์ธ
  • ๋ฆฌ๋ทฐ ์ž‘์„ฑ ( ๋ฏธ์ž‘์—…)

๊ธฐ๋Šฅ ์‹œํ˜„

๋กœ๊ทธ์ธ ๋ฉ”์ธ
์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ๊ฒฐ์ œ ๋งˆ์ดํŽ˜์ด์ง€

โš™๏ธํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๐Ÿ“Œ ๋ฌธํ™” API ์—ฐ๊ฒฐ

  • ์™ธ๋ถ€ API ๋ณ€๊ฒฝ
    • ๊ธฐ์กด ๋ฐ์ดํ„ฐ

      • ๋ฌธํ™” ๊ณต๊ณต ๋ฐ์ดํ„ฐ ๊ด‘์žฅ - ์˜ˆ์ˆ ์˜์ „๋‹น_์ข…ํ•ฉ ๊ณต์—ฐ์ •๋ณด(์ „์ฒด ์žฅ๋ฅด)
      • JSON ํƒ€์ž…
    • ๊ธฐ์กด ์—ฐ๊ฒฐ ๋ฐ์ดํ„ฐ ๋ฌธ์ œ ์‚ฌํ•ญ

      • ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ๊ฐ’์ด ๋งŽ์ง€๋งŒ ๋นˆ์นธ์œผ๋กœ ์ž‘์„ฑ ๋˜์–ด์žˆ๋Š” ์นธ์ด ๋งค์šฐ ๋งŽ์Œ
      • ์ด๋ฏธ์ง€ url ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ (์›์ธ x)
      • ๋‹ค์–‘ํ•œ ์ •๋ณด๊ฐ€ ์•„๋‹Œ ์˜ˆ์ˆ ์˜ ์ „๋‹น ํ•œ์ • ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœ๋˜์–ด ์ •๋ณด๊ฐ€ ํ•œ์ •์ ์ž„
      • ์—…๋ฐ์ดํŠธ ์†๋„๊ฐ€ ๋А๋ ค ์ด๋ฏธ ์ข…๋ฃŒ๋œ ์ด๋ฒคํŠธ๊ฐ€ ๋งŽ์Œ
    • ๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ

      • ์„œ์šธ ์—ด๋ฆฐ๋ฐ์ดํ„ฐ ๊ด‘์žฅ - ์„œ์šธ์‹œ ๋ฌธํ™” ํ–‰์‚ฌ ์ •๋ณด
      • JSON ํƒ€์ž…
    • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ด์œ 

      • ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ๊ฐ’๊ณผ ์ถ”์ถœ๋˜๋Š” ๋ฐ์ดํ„ฐ์—์„œ ๋ˆ„๋ฝ์ด ์ ์Œ
      • ์ด๋ฏธ์ง€ url ์ถœ๋ ฅ์— ์ด์Šˆ ์‚ฌํ•ญ์ด ์—†๋‹ค
      • ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋ถ„๋ฅ˜๊ฐ€ ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์Œ
      • ์„œ์šธ์‹œ ์ „์ฒด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
      • ์—…๋ฐ์ดํŠธ ์†๋„๊ฐ€ ๋น„๊ต์  ๋น ๋ฅธํŽธ

  • API ์—ฐ๊ฒฐ
    • ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์—์„œ ์ธ์ฆํ‚ค ์‹ ์ฒญ
    • ๋กœ๊ทธ์ธ ํ›„ ์ธ์ฆํ‚ค ์‹ ์ฒญ ์ž‘์„ฑ โ†’ ์ด๋ฉ”์ผ๋กœ ์‹ ์ฒญํ‚ค ๋ฐ›๊ธฐ

Untitled (10)


  1. node.js ํ™˜๊ฒฝ์—์„œ Express๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ• ํ›„ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

    a. axios๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์— http ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ฐ›์•„์˜ด const axios = require("axios")

    b. ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋กœ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์š”์ฒญ(req)๊ณผ ์„œ๋ฒ„๋กœ์˜ ์‘๋‹ต(res)์„ ์ฒ˜๋ฆฌ. Express์˜ ๋ผ์šฐํ„ฐ์—์„œ ์‚ฌ์šฉ๋จ

    c. ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด url ๊ฐ’๊ณผ ํ•„์ˆ˜ ์š”์ฒญ ๊ฐ’ ์ž‘์„ฑ - ์ธ์ฆํ‚ค๋Š” .env๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ๊ฐ€๋ ค์คŒ - .env ์— ์ €์žฅํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” process.env.APPKEY ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค

    d. cors ์—๋Ÿฌ 1. const cors = require("cors"); 2. app.options("*", cors()); 3. front file โ†’ package.json โ†’ proxy ์ถ”๊ฐ€


Untitled (11)

Untitled (12)

                const response = await axios.get(
                  `http://openapi.seoul.go.kr:8088/${process.env.APPKEY}/json/culturalEventInfo/1/500/`,
                  {
                    params: {
                      Type: "json",
                      Service: "culturalEventInfo",
                      StartIndex: 1,
                      EndIndex: 5, //๋ฐ›์•„์˜ฌ ๋ฐ์ดํ„ฐ 
                      searchValue: searchValue,
                    }

  1. ํ”„๋ก ํŠธ์—์„œ ๊ฐ’์„ ์ถœ๋ ฅ

    a. useState ํ›…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ๋ณ€์ˆ˜๋“ค(data, searchTerm, selectedCategory)์„ ์ดˆ๊ธฐํ™”

    b. useEffect ํ›…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” fetchData ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ

    c. **axios.get('/ex/twoculture')**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ /ex/twoculture ์—”๋“œํฌ์ธํŠธ๋กœ GET ์š”์ฒญ์„ ๋ณด๋ƒ„.

    d. filteredData.map ๋กœ filteredData ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” JSX ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์š”์†Œ๋ฅผ ๋ Œ๋”๋ง


๐Ÿ“Œ Link ํŽ˜์ด์ง€ ์ด๋™ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์˜ค๋ฅ˜

  • ๋ฌธ์ œ ๋ฐœ์ƒ

    • ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€์—์„œ ์˜ˆ์•ฝํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์˜ˆ์•ฝ ์ฐฝ์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์Œ.
    • ๋ฌธ์ œ์ฝ”๋“œ
    <Link to={{ pathname: `/reserve/${encodeURIComponent(item.TITLE)}`, 
    					state: { eventData: item } 
    				 }}
             onClick={() => console.log('Link clicked', item.TITLE, item)}>
           <button>์˜ˆ์•ฝํ•˜๊ธฐ</button>
    </Link>
    
    
  • ๋ฌธ์ œ ์›์ธ

    • Link ์ปดํฌ๋„ŒํŠธ์˜ to ์†์„ฑ์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์—์„œ state ์†์„ฑ์„ to ์†์„ฑ ์•ˆ์— ๋„ฃ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    • ๋ฒ„์ „์ด ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜๋ฉฐ to ์†์„ฑ ์•ˆ์— pathname ์ž…๋ ฅ ์‹œ state ๊ฐ€ ๋นˆ ๊ฐ์ฒด๋กœ ์ „๋‹ฌ
  • ํ•ด๊ฒฐ ๊ณผ์ •

    1. Link ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ์ •ํ™•ํžˆ ํ•˜๊ณ ์ž ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ  ๋ฐ ๊ตฌ๊ธ€๋ง
    2. to ์†์„ฑ๊ณผ state ์†์„ฑ์„ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์—ฌ ์†์„ฑ ์ค‘์ฒฉ ๋ฐฉ์ง€
    3. pathname ์†์„ฑ ์—†์• ๊ธฐ
    <Link to={`/reserve/${encodeURIComponent(item.TITLE)}`}
              state={{ eventData: item }}
              onClick={() => console.log('Link clicked', item.TITLE, item)}>
           <button>์˜ˆ์•ฝํ•˜๊ธฐ</button>
    </Link>

๐Ÿ“Œ ๊ฒฐ์ œ ํŽ˜์ด์ง€ ๊ฒฐ์ œ ์‹œ๊ฐ„ ๋ฐ ๊ฒฐ์ œ ๋ฐฉ์‹ ๋ฐ์ดํ„ฐ ์ €์žฅ

  • ๋ฌธ์ œ ๋ฐœ์ƒ
    • ๊ฒฐ์ œ ํŽ˜์ด์ง€์— ์žˆ๋Š” ๊ฒฐ์ œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๊ฒฐ์ œ ์‹œ๊ฐ„ ๋ฐ ๊ฒฐ์ œ ๋ฐฉ์‹์„ mongoDB์— ์ €์žฅํ•˜๋ ค ํ•˜๋Š”๋ฐ ๊ณ„์†ํ•ด์„œ undefined๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Œ
  • ๋ฌธ์ œ ์›์ธ
    • node.js์—์„œ mongoose์˜ ์Šคํ‚ค๋งˆ ์ •์˜ ๊ฐ’์— ๋ฐ›์•„์˜ค๋Š” ๊ฒฐ์ œ ์‹œ๊ฐ„๊ณผ ๊ฒฐ์ œ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •์˜๊ฐ€ ์ž˜๋ชป๋จ
      • PaymentTime โ†’ number / PaymentMethod โ†’ object
  • ํ•ด๊ฒฐ ๊ณผ์ •
    • ์Šคํ‚ค๋งˆ ์ •์˜์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•ด ๋ฐ์ดํ„ฐ์— ๋งž๋Š” ์ฝ”๋“œ๋กœ ์ž…๋ ฅ
      • PaymentTime โ†’ Date / PaymentMethod โ†’ String

๐Ÿ“Œ ๊ฒฐ์ œ ์‹œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ ์ž๋™ ์‚ญ์ œ

  • ๋ฌธ์ œ ๋ฐœ์ƒ

    • ๊ฒฐ์ œํŽ˜์ด์ง€์—์„œ ๊ฒฐ์ œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ์— ์ €์žฅ๋œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™ ์‚ญ์ œ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ณ„์†ํ•ด์„œ Axios ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ
  • ๋ฌธ์ œ ์›์ธ

    • node.js์—์„œ ์ •์˜ํ•œ save delete ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ id ๊ฐ’์ด ์ œ๋Œ€๋กœ ์ •์˜๋˜์ง€ ์•Š์•„ ๊ณ„์†๋œ ์—๋Ÿฌ ๋ฐœ์ƒ
  • ํ•ด๊ฒฐ ๊ณผ์ •

    • const *reserveIdToDelete* = *location.state.id*; ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ณผ์ •์— ์žˆ์–ด ํ˜„์žฌ ์˜ˆ์•ฝ ์ •๋ณด์˜ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด Axios ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐ
    const reserveIdToDelete = location.state.id;
    
            const deleteResponse = await axios.delete(`/save/delete/${reserveIdToDelete}`);
            if (deleteResponse.status === 200) {
              console.log('์˜ˆ์•ฝ ์ •๋ณด ์‚ญ์ œ ์„ฑ๊ณต');
            } else {
              console.error('์˜ˆ์•ฝ ์ •๋ณด ์‚ญ์ œ ์‹คํŒจ');
            }
          
      
          if (response.status === 200) {
            console.log('Reservation successful!');
          }
        } catch (error) {
          console.error('Reservation error:', error);
    

๐Ÿ“Œ ์˜ˆ์•ฝ ๋‚ ์งœ์— ๋งž์ถฐ ํ•ด๋‹น ๋‹ฌ์ด ๋ณด์—ฌ์ง (ํ•ด๊ฒฐ x)

  • ๋ฌธ์ œ ๋ฐœ์ƒ

    • activeStartDate ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ์— ์‹œ์ž‘์ผ์ด ํ•ด๋‹น๋˜๋Š” ๋‹ฌ์ด ๊ฐ€์žฅ ๋จผ์ € ๋‚˜ํƒ€๋‚˜๊ฒŒ ์ž‘์—…ํ•˜๋ ค ํ–ˆ์œผ๋‚˜, ํ•ด๋‹น ๋‹ฌ์ด ๊ฐ€์žฅ ๋จผ์ € ๋‚˜ํƒ€๋‚˜์ง€๋งŒ ๋‹ค์Œ๋‹ฌ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
  • ๋ฌธ์ œ ์›์ธ

  • ํ•ด๊ฒฐ ๊ณผ์ •


๐Ÿ’ซํ”„๋กœ์ ํŠธ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Project site: click๐ŸŒ

ID : 111
PW : 111

About

๐ŸŽŸ๏ธ Ticketing ์„œ์šธ ๋ฌธํ™” ๋ฐ์ดํ„ฐ ์˜ˆ์•ฝAPP (React + ๊ณต๊ณต API)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors