Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Item_Simulation

์•„์ดํ…œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ž…๋‹ˆ๋‹ค. API๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํšŒ์›๊ฐ€์ž… API cubetale.shop:3020/api/sign-up { "playerId": "์•„์ด๋””", "password": "๋น„๋ฐ€๋ฒˆํ˜ธ 6์ž๋ฆฌ์ด์ƒ", "name": "์ด๋ฆ„", "age": ๋‚˜์ด, "gender": "์„ฑ๋ณ„" }

๋กœ๊ทธ์ธ API cubetale.shop:3020/api/login { "playerId": "ํšŒ์›๊ฐ€์ž…ํ•œ ์•„์ด๋””", "password": "๋น„๋ฐ€๋ฒˆํ˜ธ" }

์บ๋ฆญํ„ฐ ์ƒ์„ฑ API cubetale.shop:3020/api/char-create { "nickname": "๋‹‰๋„ค์ž„" }

์บ๋ฆญํ„ฐ ์ƒ์„ธ ์กฐํšŒ API cubetale.shop:3020/api/char-create/์กฐํšŒํ•  ์บ๋ฆญํ„ฐ id

์•„์ดํ…œ ์ƒ์„ฑ API :3020/api/item-create { "item_name": "์•„์ดํ…œ ์ด๋ฆ„", "item_health": ์ฒด๋ ฅ์Šคํ…Ÿ, "item_power": ๊ณต๊ฒฉ๋ ฅ์Šคํ…Ÿ, "item_price": ๊ฐ€๊ฒฉ }

์•„์ดํ…œ ์ˆ˜์ • API cubetale.shop:3020/api/item-create/์กฐํšŒํ•  ์•„์ดํ…œ code { "item_name": "์ˆ˜์ •ํ•  ์•„์ดํ…œ ์ด๋ฆ„", "item_health": ์ˆ˜์ •ํ•  ์ฒด๋ ฅ์Šคํ…Ÿ, "item_power": ์ˆ˜์ •ํ•  ๊ณต๊ฒฉ๋ ฅ์Šคํ…Ÿ }

์•„์ดํ…œ ๋ชฉ๋ก ์กฐํšŒ API cubetale.shop:3020/api/item-create

์•„์ดํ…œ ์ƒ์„ธ ์กฐํšŒ API cubetale.shop:3020/api/item-create/์กฐํšŒํ•  ์•„์ดํ…œ code

  1. ์•”ํ˜ธํ™” ๋ฐฉ์‹
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ DB์— ์ €์žฅํ•  ๋•Œ Hash๋ฅผ ์ด์šฉํ–ˆ๋Š”๋ฐ, Hash๋Š” ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”์™€ ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™” ์ค‘ ์–ด๋–ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์— ํ•ด๋‹นํ• ๊นŒ์š”? Hash๋Š” ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”์ž…๋‹ˆ๋‹ค.
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ทธ๋ƒฅ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  Hash ํ•œ ๊ฐ’์„ ์ €์žฅ ํ–ˆ์„ ๋•Œ์˜ ์ข‹์€ ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? Hashํ•จ์ˆ˜์˜ ํŠน์„ฑ์ธ ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹ฑํ–ˆ์„ ๋•Œ ์•”ํ˜ธํ™”๋œ ๊ฐ’์„ ๋‹ค์‹œ ๋ณตํ˜ธํ™” ํ•  ์ˆ˜ ์—†์–ด ๋ณด์•ˆ์— ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
  2. ์ธ์ฆ ๋ฐฉ์‹
    • JWT(Json Web Token)์„ ์ด์šฉํ•ด ์ธ์ฆ ๊ธฐ๋Šฅ์„ ํ–ˆ๋Š”๋ฐ, ๋งŒ์•ฝ Access Token์ด ๋…ธ์ถœ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? Access Token์ด ๋…ธ์ถœ๋˜๋ฉด ์‹ค์ œ๋กœ๋Š” ์›๋ž˜ ์œ ์ €๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ํ•ด๋‹น ์œ ์ €์˜ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋งˆ์Œ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์œ„ํ—˜ํ•˜๋‹ค.
    • ํ•ด๋‹น ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ์š”? ์ด๋Ÿฌํ•œ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์œ„ํ•ด Access Token์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์งง๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฃผ ์ธ์ฆํ•˜๊ฒŒํ•ด์ฃผ๊ฑฐ๋‚˜, Refresh Token์„ ๋งŒ๋“ค์–ด DB์— ์ €์žฅํ•˜๊ณ , Access Token์ด ๋งŒ๋ฃŒ๋˜๋ฉด Refresh Token์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด Access Token์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
  3. ์ธ์ฆ๊ณผ ์ธ๊ฐ€
    • ์ธ์ฆ๊ณผ ์ธ๊ฐ€๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ฐ๊ฐ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ์ธ์ฆ์€ ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ธ๊ฐ€๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋– ํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    • ์œ„ API ๊ตฌํ˜„ ๋ช…์„ธ์—์„œ ์ธ์ฆ์„ ํ•„์š”๋กœ ํ•˜๋Š” API์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ API์˜ ์ฐจ์ด๊ฐ€ ๋ญ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ์ธ์ฆ์ด ํ•„์š”์—†๋Š” ํšŒ์›๊ฐ€์ž…์€ ์•„์ง ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ๊ฒ€์ฆํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ๊ณผ์ œ์—์„œ ๊ตฌํ˜„ํ•œ UserMiddleware๋Š” ์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋‹จ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • ์•„์ดํ…œ ์ƒ์„ฑ, ์ˆ˜์ • API๋Š” ์ธ์ฆ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ ์‚ฌ์‹ค์€ ์–ด๋А API๋ณด๋‹ค๋„ ์ธ์ฆ์ด ํ•„์š”ํ•œ API์ž…๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”? ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ๋ˆ„๊ตฐ๊ฐ€ ์‚ฌ๊ธฐ ์•„์ดํ…œ์„ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๋ณด์ž์˜ ์•„์ดํ…œ์ด ์ตœ์ƒ์œ„ ์•„์ดํ…œ์ด ๋˜๋ฉด ๊ฒŒ์ž„ ๊ฒฝ์ œ๊ฐ€ ๋ง๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  4. Http Status Code
    • ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•œ Http Status Code๋ฅผ ๋ชจ๋‘ ๋‚˜์—ดํ•˜๊ณ , ๊ฐ๊ฐ์ด ์˜๋ฏธํ•˜๋Š” ๊ฒƒ๊ณผ ์–ด๋–ค ์ƒํ™ฉ์— ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”. 200: ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. (GET, HEAD, PUT, TRACE) 201: ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (POST, PUT) 400: Bad Request ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋กœ ์ธ์‹๋˜๋Š” ์ƒํ™ฉ(ex: ์ž˜๋ชป๋œ ์š”์ฒญ ๊ตฌ๋ฌธ, ์ž˜๋ชป๋œ ์š”์ฒญ ๋ฉ”์‹œ์ง€ ํ”„๋ ˆ์ด๋ฐ ๋˜๋Š” ์‚ฌ๊ธฐ์„ฑ ์š”์ฒญ ๋ผ์šฐํŒ…)์œผ๋กœ ์ธํ•ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 401: Unauthorized HTTP ํ‘œ์ค€์€ "์ธ์ฆ๋˜์ง€ ์•Š์Œ"์„ ๋ช…์‹œํ•˜์ง€๋งŒ, ์˜๋ฏธ์ ์œผ๋กœ ์ด ์‘๋‹ต์€ "์ธ์ฆ๋˜์ง€ ์•Š์Œ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ๋œ ์‘๋‹ต์„ ๋ฐ›์œผ๋ ค๋ฉด ์ž์‹ ์„ ์ธ์ฆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 404: Not Fount ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋Š” URL์ด ์ธ์‹๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 409: Conflict ์ด ์‘๋‹ต์€ ์š”์ฒญ์ด ์„œ๋ฒ„์˜ ํ˜„์žฌ ์ƒํƒœ์™€ ์ถฉ๋Œํ•  ๋•Œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. 500: Internal Server Error ์„œ๋ฒ„์—์„œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  5. ๊ฒŒ์ž„ ๊ฒฝ์ œ
    • ํ˜„์žฌ๋Š” ๊ฐ„ํŽธํ•œ ๊ตฌํ˜„์„ ์œ„ํ•ด ์บ๋ฆญํ„ฐ ํ…Œ์ด๋ธ”์— money๋ผ๋Š” ๊ฒŒ์ž„ ๋จธ๋‹ˆ ์ปฌ๋Ÿผ๋งŒ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
      • ์ด๋ ‡๊ฒŒ ๋˜์—ˆ์„ ๋•Œ ์–ด๋– ํ•œ ๋‹จ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์„๊นŒ์š”? ํ•ญ์ƒ ๋ฌธ์ œ์ ์€ ๋ณด์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ์˜ ๋ณด์•ˆ์ด ๋šซ๋ ค ๋‚ด ์บ๋ฆญํ„ฐ๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์กฐ์ข…์ด ๊ฐ€๋Šฅ ํ•  ๋•Œ money๋Š” ๊ฒฐ๊ตญ ์žฌํ™”์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์ด๊ธฐ์— ๊ฒŒ์ž„์—์„œ ๊ต‰์žฅํžˆ ๋ฏผ๊ฐํ•œ ์ž์›์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ž์›์ด ์บ๋ฆญํ„ฐ ์ •๋ณด์™€ ํ•จ๊ป˜ ์žˆ์œผ๋ฉด ์บ๋ฆญํ„ฐ ์ •๋ณด๊ฐ€ ๋šซ๋ฆด ๋Œธ ์žฌํ™”์˜ ์–‘์„ ๋งˆ์Œ๋Œ€๋กœ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ์š”? ์ฆ‰, ๋ณด์•ˆ์„ฑ์„ ๋Š˜๋ฆฌ๋Š”๊ฒŒ ํ•ต์‹ฌ์ด๊ณ  ๋‹น์žฅ์— ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ์ง์ ‘ ์ „์†กํ•˜๊ฒŒ ๋  ์บ๋ฆญํ„ฐ ์ •๋ณด์— ๋„ฃ๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ๋“ค์–ด๊ฐˆ ์žฌํ™” ๋ฆฌ์†Œ์Šค๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์„ ๋Š˜๋ ค์ค˜์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ DB์— ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์—ฌ ์บ๋ฆญํ„ฐ ์ •๋ณด ์™€ ์žฌํ™” ๊ด€๋ฆฌ๋Š” ๋”ฐ๋กœ ํ•ด์ฃผ๋ฉด ๋”์šฑ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • ์•„์ดํ…œ ๊ตฌ์ž… ์‹œ์— ๊ฐ€๊ฒฉ์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž…๋ ฅํ•˜๊ฒŒ ํ•˜๋ฉด ์–ด๋– ํ•œ ๋ฌธ์ œ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์„๊นŒ์š”? ์•„์ดํ…œ ๊ฐ€๊ฒฉ์„ ์ž๊ธฐ ๋งˆ์Œ๋Œ€๋กœ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ๋ฅผ ๋“ค์–ด ์•„์ดํ…œ ์ƒ์ ์—์„œ 0์›์— ์‚ฐ ๋ฌด๊ธฐ๊ฐ€ ํŒ๋งคํ•  ๋•Œ 10000์ด๋ผ๊ณ  ํ•˜๋ฉด ๋ˆ ๋ณต์‚ฌ๊ฐ€ ๋˜๊ธฐ ๋–„๋ฌธ์— ๊ฒŒ์ž„ ๊ฒฝ์ œ๊ฐ€ ๋ง๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ฐ€๊ฒฉ์„ ๊ตฌ๋งคํ• ๋•Œ 1000์› ์งœ๋ฆฌ๋ฅผ 10000์›์œผ๋กœ ๊ตฌ๋งคํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์›๋ž˜ 10๊ฐœ๋ฅผ ๊ตฌ๋งคํ•  ์ƒ๊ฐ์ด์—ˆ์ง€๋งŒ 1๊ฐœ๋ฅผ ๊ตฌ๋งคํ•˜๊ฒŒ ๋˜์–ด ์„œ๋ฒ„ ๋กค๋ฐฑ์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋งค์žฅ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ์ธ๊ฐ„์ด๋ผ๋ฉด ์–ธ์ œ๋“  ์‹ค์ˆ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 1000๋งŒ์›์งœ๋ฆฌ๋ฅผ 100๋งŒ์›์— ์˜ฌ๋ฆฌ๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฝ๋งค์žฅ์— ๋‹ค๋ฅธ ์œ ์ €๋“ค์—๊ฒŒ ์‹ค์ œ๋กœ ๋ณด์ด๋Š” ์‹œ๊ฐ„ ๊นŒ์ง€ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋‘์–ด ์•„์ดํ…œ ๊ฐ€๊ฒฉ์„ ๋‹ค์‹œ ์ฒดํฌํ•˜๊ณ  ์ž˜๋ชป ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ ๋‹ค์‹œ ์ˆ˜๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์‹œ๊ฐ„์„ ์ฃผ๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages