๊ฐœ๋ฐœ๊ตฌ๋ฆฌ๐Ÿธ

์‹๋ณ„๊ด€๊ณ„์™€ ๋น„์‹๋ณ„๊ด€๊ณ„

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์˜ค๋Š˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ์‹๋ณ„๊ด€๊ณ„์™€ ๋น„์‹๋ณ„๊ด€๊ณ„์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹๋ณ„ ๊ด€๊ณ„ ์ž์‹ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค(PK)์— ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ด€๊ณ„ ์•„๋ž˜๋Š” ์˜ˆ์‹œ๋ฅผ ์œ„ํ•œ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํ…Œ์ด๋ธ” : ์‚ฌ์šฉ์ž ์‚ฌ์šฉ์ž ID (PK) ๋ถ€๋ชจ ํ…Œ์ด๋ธ” : ๊ฒŒ์‹œ๊ธ€ ๊ฒŒ์‹œ๊ธ€ ID (PK...

jest ์‚ฌ์šฉํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ express.js ์˜ ๋‹จ์œ„ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ jest ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Jest ๋ž€? express.js ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ํ…Œ์ŠคํŠธ ํŒŒ์ผ ์ƒ์„ฑ ๊ธฐ์กด์˜ ํŒŒ์ผ๋ช…์— .test ํ˜น์€ .spec ์„ ์—ฐ๊ฒฐํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์˜ ํ…Œ์ŠคํŠธ ํŒŒ์ผ๋กœ์จ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ) index.js ์˜ ํ…Œ์ŠคํŠธ ํŒŒ์ผ index...

express์— swagger ์ ์šฉํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ๊ฐ•์˜ ์ค‘ ์Šค์›จ๊ฑฐ ์—ฐ๋™ํ•˜๊ธฐ๋ผ๋Š” ๊ณผ์ œ๋ฅผ ํ•ด๋ณด๋ฉด์„œ swagger-autogen ์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๋Š”๋ฐ ์ด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Swagger ๋ž€? RESTful API ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œํ™”๋œ API๋Š” Swagger ui ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ณ  ์š”์ฒญ/์‘๋‹ต์˜ ํ˜•์‹๊ณผ HTTP STATUS ์ƒํƒœ์— ๋”ฐ๋ฅธ ์‘๋‹ต ๊ฐ’์˜ ํ˜•ํƒœ๋ฅผ ํ™•...

MySQL ์„ค์น˜ ์—๋Ÿฌ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ๊ณต๋ถ€ํ•˜๋Š” ๋…ธํŠธ๋ถ ์žฅ๋น„๋ฅผ ๋ฐ”๊พธ๊ฒŒ ๋˜์–ด ์ƒˆ๋กญ๊ฒŒ MySQL์„ ์„ค์น˜ํ•˜๋‹ค ์ƒ๊ธด ์—๋Ÿฌ ๋‚ด์šฉ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ ์œ„์˜ ํ™”๋ฉด ์ฒ˜๋Ÿผ Initializing database ๋‹จ๊ณ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Log ํƒญ์—์„œ๋Š” ์•„๋ž˜์˜ ๋กœ๊ทธ๊ฐ€ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. Successfully added the Windows Firewall rule...

๋ฏธ๋“ค์›จ์–ด ํ™•์žฅ ํŒจํ„ด๊ณผ ํ•จ์ˆ˜ ์ฒด์ด๋‹

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ๋ฏธ๋“ค์›จ์–ด ํ™•์žฅํŒจํ„ด๊ณผ ํ•จ์ˆ˜ ์ฒด์ด๋‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ํ•จ์ˆ˜ ์ฒด์ด๋‹ ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค. ์–ด๋– ํ•œ ๋ฆฌํ„ด ๊ฐ’์ด ํ•จ์ˆ˜๋ฉด ์ด์–ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ด์–ด์„œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. function middleware(test){ console.log('test ...

CORS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์•ˆ๋…•ํ•˜์„ธ์š” ์›น ๊ฐœ๋ฐœ ํ•  ๋•Œ CORS ์—๋Ÿฌ๋Š” ๋ฐ˜๋“œ์‹œ ๋„˜์–ด์•ผํ•˜๋Š” ์‚ฐ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ ๊ฒช์œผ๋ฉด ๋‹นํ™ฉ์Šค๋Ÿฝ๊ธฐ ๊ทธ์ง€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ CORS ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. CORS? Cross-Origin Resource Sharing ์˜ ์•ฝ์ž ์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์ž์›์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„ ...

ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION ์—๋Ÿฌ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์˜ค๋Š˜์€ ์ผํ•˜๋Š”๋ฐ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์—๋Ÿฌ๋ฅผ ๋งŸ๋‹ฅ๋œจ๋ ธ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ๋„ํ•˜๋Š”๋ฐ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์•ˆ๋œ๋‹ค๊ณ โ€ฆ!! ์›์ธ ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION ์—๋Ÿฌ์˜ ์›์ธ์€ ์„œ๋ฒ„์˜ RESPONSE์— ์ค‘๋ณต๋œ ํ—ค๋” ์ž…๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ํ—ค๋”๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์š”์†Œ๋กœ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ž˜๋ชป๋œ ํ—ค๋” ์„ค์ •๋„ ์žˆ...

uuid ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „๋ณ„ ํŠน์ง•

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ๊ฐ์˜ ๊ณ ์œ ํ•œ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด UUID ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” UUID ์ƒ์„ฑ์„ ๋•๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ uuid ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๋ฒ„์ „๋ณ„ ํŠน์ง•์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. UUID๋ž€ Universally Unique Identifier ์˜ ์•ฝ์ž. ์„ธ์ƒ์—์„œ ์œ ์ผํ•œ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ ์œ ํ•œ ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์‚ฌ...

์ œ์ด์ฟผ๋ฆฌ Events

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์ œ์ด์ฟผ๋ฆฌ ์นดํ…Œ๊ณ ๋ฆฌ Events ์— ๋Œ€ํ•ด ์ผ๋ถ€ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ œ์ด์ฟผ๋ฆฌ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ ๋ฐ”์ธ๋”ฉ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ ์šฉ๋ฒ•์— ๋”ฐ๋ผ ์กฐ๊ธˆ์”ฉ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ™•์‹คํžˆ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ด๋ฒคํŠธ ์œ ํ˜•์— ๋”ฐ๋ฅธ ๋ฐ”์ธ๋”ฉ ํ•จ์ˆ˜๋“ค์ด ์กด์žฌํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ๋ฒ•์€ on() ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ...

์ œ์ด์ฟผ๋ฆฌ ์ด๋ฒคํŠธ ์ค‘์ฒฉ ๋ฌธ์ œ

์˜ค๋Š˜์€ ์ œ์ด์ฟผ๋ฆฌ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ค‘์ฒฉ ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์ผ ๋ฐฐํฌ ๋‚˜๊ฐ€์•ผํ•˜๋Š”๋ฐ ๐Ÿฅฒ ๋ฌธ์ œ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์˜ change ์ด๋ฒคํŠธ๊ฐ€ ํ•œ๋ฒˆ์˜ change์— ์—ฌ๋Ÿฌ ๋ฒˆ ๋™์ž‘ ์˜ˆ์‹œ) change ์ด๋ฒคํŠธ๊ฐ€ ์–ผ๋Ÿฟ์„ ๋„์šฐ๋Š” ๊ฒฝ์šฐ change ํ•œ๋ฒˆ์— ์–ผ๋Ÿฟ์ด ์—ฌ๋Ÿฌ๊ฐœ ๋ฐœ์ƒ ์›๋ž˜ ์˜๋„ ํŽ˜์ด์ง€ ์ตœ์ดˆ ์ ‘๊ทผ ์‹œ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ์–ด์ฃผ๋Š” ์ฝ”๋“œ๊ฐ€ 1ํšŒ ๋™์ž‘ ํ•˜์—ฌ change...

์ธ๊ธฐ ํƒœ๊ทธ