[๋ฐ๋ธŒ์ฝ”์Šค] Express REST API ๊ธฐ์ดˆ(get(), res.send(), res.json(), res.params())
ยท
๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL
์ง€๊ธˆ๊นŒ์ง€๋Š” HTTP ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  ๋ผ์šฐํŒ…์„ ๊ตฌํ˜„ํ•ด ๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ์ด๊ฑธ ์ง์ ‘ ๋‹ค ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜? ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.Express.js๋Š” ์ด๋Ÿฐ ์ž‘์—…์„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ์ด๋‹ค. ์˜ค๋Š˜์€ Express.js ๋ฅผ ์•Œ์•„๋ณด๊ณ , Express.js๋ฅผ ํ™œ์šฉํ•˜์—ฌ REST API๋ฅผ ๋งŒ๋“œ๋Š” ์‹ค์Šต์„ ํ•ด๋ณด์•˜๋‹ค.๐Ÿ–คExpressExpress๋ž€?Node.js ํ™˜๊ฒฝ์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ API๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒฝ๋Ÿ‰ ์›น ํ”„๋ ˆ์ž„์›ŒํฌExpress ๋Š” HTTP ๋ชจ๋“ˆ ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฉฐ, ๋” ์ง๊ด€์ ์ธ ๋ผ์šฐํŒ…, ๋ฏธ๋“ค์›จ์–ด ์ฒ˜๋ฆฌ, ๋‹ค์–‘ํ•œ ์‘๋‹ต ๋ฉ”์„œ๋“œ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค. ํŠน์ง•๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•: ๋ผ์šฐํŒ…๊ณผ ์‘๋‹ต ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จ๋ฏธ๋“ค์›จ์–ด ๊ธฐ๋ฐ˜: ์š”์ฒญ ํ๋ฆ„์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋‹จ๊ณ„๋ณ„๋กœ ์‚ฝ์ž…RESTful..
[๋ฐ๋ธŒ์ฝ”์Šค] Node.js ๋ชจ๋“ˆ๊ณผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ดํ•ด(๋ชจ๋“ˆํ™”, npm, ๋…ผ๋ธ”๋กœํ‚น I/O)
ยท
๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL
์˜ค๋Š˜์€ HTTP Method๋ฅผ ๋ณต์Šตํ•˜๊ณ  Node.js๋ฅผ ์ข€ ๋” ๊นŠ๊ฒŒ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด์ „ ์‹œ๊ฐ„์— ๋ฐฐ์šด ๋ชจ๋“ˆ์— ๋Œ€ํ•ด์„œ๋„ ์ข€ ๋” ์ž์„ธํžˆ ๋ฐฐ์šฐ๊ณ , ๋ชจ๋“ˆ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด๋„ ์•Œ์•„๋ณด์•˜์Œ.๐Ÿ”ญHTTP method ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์–ด๋–ค ๋™์ž‘์„ ์›ํ•˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ์‹. ๊ฐ ๋ฉ”์„œ๋“œ๋Š” ๊ณ ์œ ์˜ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, REST API ์„ค๊ณ„์˜ ๊ธฐ๋ณธ์ด ๋œ๋‹ค. ์ฃผ์š” HTTP Method Method ์—ญํ•  ์ƒ์„ฑ POST ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์š”์ฒญ ๋ณธ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์„œ ์ „์†กํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ URL์— ๋…ธ์ถœ๋˜์ง€ ์•Š์•„ ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค. ๋˜ํ•œ ์บ์‹œ๋˜์ง€ ์•Š๊ณ , ๋ธŒ๋ผ์šฐ์ € ํžˆ์Šคํ† ๋ฆฌ์— ๋‚จ์ง€ ์•Š๋Š”๋‹ค. ์กฐํšŒ GET ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ..
[๋ฐ๋ธŒ์ฝ”์Šค] 1์ฃผ์ฐจ ํšŒ๊ณ (ft.๋ฐ๋ธŒ์ฝ”์Šค 1์ฃผ์ผ ์ˆ˜๊ฐ• ํ›„๊ธฐ)
ยท
๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/ํšŒ๊ณ 
๋ฒŒ์จ ๋ฐ๋ธŒ์ฝ”์Šค ์ฒซ ์ฃผ๊ฐ€ ๋๋‚ฌ๋‹ค. 3์›” 28์ผ์— ๊ฐœ๊ฐ•ํ–ˆ๋Š”๋ฐ, ์ฒด๊ฐ์ƒ ํ•œ๋‹ฌ์€ ํ•œ ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ. ์‹œ๊ฐ„์ด ์ฐธ ๋น ๋ฅด๊ฒŒ ์ง€๋‚˜๊ฐ”๋‹ค. ์ฒซ ์ฃผ ํšŒ๊ณ ์™€, ๋ฐ๋ธŒ์ฝ”์Šค๋ฅผ ์ผ์ฃผ์ผ ๋“ค์œผ๋ฉด์„œ ๋А๋‚€์ ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.ํšŒ๊ณ : โญโญโญโญ๐Ÿ‘Liked1. ๋งค์ผ ๊ณต๋ถ€์ฃผ๋ง๋„ ๋น ์ง์—†์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ , ๊ทธ๋‚  ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์„œ ๋ธ”๋กœ๊ทธ์— ์—…๋กœ๋“œ ํ–ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธด ํ–ˆ์ง€๋งŒ, ๊ธ€์„ ์“ฐ๋ฉด์„œ ๋ณต์Šต์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋˜๋‹ˆ ํ•™์Šต์— ๋งŽ์€ ๋„์›€์ด ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜์ค‘์— ์Šค์Šค๋กœ ๋Œ์•„๋ณด๊ธฐ์—๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ฃผ๋ง์—๋„! ํ† ์š”์ผ์—๋„! ์ผ์š”์ผ์—๋„! ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค๋Š” ์ ์—์„œ ์Šค์Šค๋กœ ์ฐธ์ž˜ํ–ˆ์–ด์š” ๋„์žฅ ์˜ค๋ฐฑ๊ฐœ ์ฃผ๊ณ  ์‹ถ๋‹ค. 2. NestJs ์Šคํ„ฐ๋”” ๋ชจ์ง‘์•„๋ฌด๋„ ๋ชจ์ง‘๊ธ€ ์•ˆ ์˜ฌ๋ฆฌ๊ธธ๋ž˜ ์ดํ‹€ ๋™์•ˆ ๋ˆˆ์น˜๋งŒ ๋ณด๋‹ค๊ฐ€, ๊ฒฐ๊ตญ ๋‚ด๊ฐ€ ์ œ์ผ ๋จผ์ € ์˜ฌ๋ ธ๋‹ค. ์ด๋ฒˆ ๊ณผ์ •์—์„œ๋Š” Express๋งŒ ๋ฐฐ..
[๋ฐ๋ธŒ์ฝ”์Šค] API์™€ REST API ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ
ยท
๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL
ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์ž‘๋™ํ•˜๋Š” ์›น ํ™˜๊ฒฝ์—์„œ API๋Š” ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด๋‹ค. API์™€ REST API์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๊ณ  ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.๐ŸŒ APIํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ๋„์™€์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์ŠคAPI๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„œ๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ†ต๋กœ ์—ญํ• ์„ ํ•œ๋‹ค.์ธํ„ฐํŽ˜์ด์Šค๋ž€?๋‘ ๊ฐœ์ฒด ์‚ฌ์ด๋ฅผ ์ค‘์žฌํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๋งค๊ฐœ์˜ˆ๋ฅผ ํ‹€์–ด, ์šฐ๋ฆฌ๊ฐ€ ์Šค๋งˆํŠธํฐ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฒ„ํŠผ์ด๋‚˜ ํ™”๋ฉด์„ ํ„ฐ์น˜ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฌ๋žŒ-๊ธฐ๊ธฐ ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ GUI๋ผ๊ณ  ํ•œ๋‹ค.GUI: ๋ฒ„ํŠผ, ์•„์ด์ฝ˜ ๋“ฑ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ๋กœ ์ œ์–ดํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์ŠคCLI: ํ…์ŠคํŠธ ๋ช…๋ น์–ด๋กœ ์ปดํ“จํ„ฐ์™€ ์†Œํ†ตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๐Ÿ‘‰ API๋Š” ๊ฐœ๋ฐœ์ž์™€ ์„œ๋ฒ„, ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์™€ API๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ..
[๋ฐ๋ธŒ์ฝ”์Šค] ๐ŸŽพํ…Œ๋‹ˆ์Šค ๋งˆ์ผ“ ๋ฐฑ์—”๋“œ ์—ฐ๊ฒฐํ•˜๊ธฐ(node.js, mariaDB)
ยท
๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/ํ”„๋กœ์ ํŠธ
์–ด์ œ ํผ๋ธ”๋ฆฌ์‹ฑํ•œ ํ…Œ๋‹ˆ์Šค ๋งˆ์ผ“ ํŽ˜์ด์ง€์— ๋ฐฑ์—”๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ๋‹ค.๐ŸŽซDB๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ๋จผ์ € ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ํ…Œ์ด๋ธ” product๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.CREATE TABLE product( -> id INT, -> name VARCHAR(30), -> description VARCHAR(100), -> price INT)Node.js์—์„œ MariaDB ์—ฐ๊ฒฐํ•˜๊ธฐNode.js์—์„œ MariaDB๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  mysql ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.(MariaDB ๋ชจ์ฒด๊ฐ€ MySQL)npm install mysql --save ๋‹ค์Œ์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. database/connect/mariadb.js ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์„ค์ •ํ–ˆ๋‹ค.const mariadb..
[๋ฐ๋ธŒ์ฝ”์Šค] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ํ•˜๊ธฐ(๐Ÿ‹Docker, MariaDB, SQL)
ยท
๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL
๐Ÿ’พ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ฒด.๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๋ง‰๊ณ , ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.DBMSDataBase Management System, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์šด์˜ํ•˜๊ณ  ๊ด€๋ฆฌDBMS๋Š” ์‚ฌ์šฉ์ž ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ์‚ญ์ œํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด๋„ ๋ฌธ์ œ ์—†๊ฒŒ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.  ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ DBMS๊ฐ€ ์žˆ๊ณ , ์šด์˜ํ•˜๋Š” ํšŒ์‚ฌ๋Š” ๋‹ฌ๋ผ๋„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ช…๋ น์–ด๋Š” ๋™์ผํ•˜๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ, Oracle DatabaseMySQL์ด ๋‘ DBMS๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. MariaDBMySQL์„ ๋ชจ์ฒด๋กœ ํ•˜๋Š” DBMSMariaDB๋Š” ..