๋ชฉ๋ก๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ (118)

Bibi's DevLog ๐Ÿค“๐ŸŽ

REST API๊ฐ€ ๋ญ”๊ฐ€์š”? - ์ธํ„ฐํŽ˜์ด์Šค, API, REST API, HTTP method

REST API๊ฐ€ ๋ญ”๊ฐ€์š”? - ์ธํ„ฐํŽ˜์ด์Šค, API, REST API, HTTP method ์ธํ„ฐํŽ˜์ด์Šค๋ž€? : ์†Œํ†ต์ฐฝ๊ตฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๊ฒŒ ํ•ด์ฃผ๊ณ , ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ํ•จ. ์–ด๋–ค ๊ธฐ๊ณ„๋ฅผ ๋งŒ๋“ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ๊ธฐ๋Šฅ์„ ์ „๋ถ€ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ์–ด์žฅ์น˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•จ. (TV-๋ฆฌ๋ชจ์ปจ, ์žํŒ๊ธฐ-๋ฒ„ํŠผ, ์ปดํ“จํ„ฐ-ํ‚ค๋ณด๋“œ์™€ ๋งˆ์šฐ์Šค์ฒ˜๋Ÿผ. ) ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ๋ฒ„ํŠผ, ์Šคํฌ๋กค๋ฐ”, ์Šฌ๋ผ์ด๋”, ๋ธŒ๋ผ์šฐ์ € ์ฐฝ ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์ œ์–ดํ•˜๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. (UI : User Interface, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค) ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ๊ณ„-๊ธฐ๊ณ„, ์†Œํ”„ํŠธ์›จ์–ด-์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์ด์—์„œ๋„ ์ˆ˜๋งŽ์€ ์š”์ฒญ๊ณผ ์ •๋ณด๊ตํ™˜์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•œ ์ฐฝ๊ตฌ๋ฅผ API๋ผ๊ณ  ํ•œ๋‹ค. API๋ž€? Application Programming Inte..

Camel case, Kebab case, Snake case ๊ทธ๋ฆฌ๊ณ  Pascal case

Camel case, Kebab case, Snake case ๊ทธ๋ฆฌ๊ณ  Pascal case ์œ„ ๋งํฌ์—์„œ ๋„ˆ๋ฌด ์„ค๋ช…์„ ์ž˜ ํ•ด์ฃผ์…”์„œ ๋‚˜๋Š” ์š”์•ฝ์ •๋ฆฌ๋งŒ ํ–ˆ๋‹ค! -case ๊ทœ์น™์œผ๋กœ ๋„ค์ด๋ฐ์„ ํ•˜๋Š” ์ด์œ ? ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. Camel Case ๋‚™ํƒ€ ํ˜น์ฒ˜๋Ÿผ ์˜ค๋ฅด๋ฝ๋‚ด๋ฆฌ๋ฝํ•ด์„œ camel case์ž„ ์ฒซ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐ My Visitor Count -> myVisitorCount Snake Case ์–ธ๋”์Šค์ฝ”์–ด(_)๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ํ•œ ํ‘œ๊ธฐ๋ฐฉ์‹ My Visitor Count -> my_visitor_count ์ƒ์ˆ˜์˜ ๊ฒฝ์šฐ MY_VISITOR_COUNT์™€ ๊ฐ™์ด ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐ ์ฃผ๋กœ ์ƒ์ˆ˜ ํ‘œํ˜„์— ์‚ฌ์šฉ Kebab Case ๋จน๋Š” ์ผ€๋ฐฅ์—์„œ ์œ ๋ž˜ํ•จ ๋Œ€์‹œ(-)๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ํ•˜๋ฉฐ, ๋ชจ๋‘..

[Spring, H2 database] ์Šคํ”„๋ง ์•ฑ๊ณผ H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐํ•˜๊ธฐ

์‚ฌ์‹ค์ƒ ๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ์ •๋ฆฌํ•œ ๊ฒƒ์ด์ง€๋งŒ... ๊ทธ๋™์•ˆ ์ธ๊ฐ•, ์ˆ˜์—…, ๋ฏธ์…˜ ํ•˜๋ฉฐ ๋ฐฐ์šด ๊ฑธ ์ˆœ์„œ๋Œ€๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. (H2๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์Šคํ”„๋ง ๋ถ€ํŠธ, gradle, JPA ์‚ฌ์šฉ) 0. H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜ H2๋Š” ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ, ๊ต์œก ์šฉ๋„์˜ DB์ด๋‹ค. ํ™ˆํŽ˜์ด์ง€ ๊ฐ€๋ณ๊ณ (์šฉ๋Ÿ‰์ด ์ž‘๋‹ค) ํŽธ๋ฆฌํ•˜๋‹ค ์›น ํ™”๋ฉด์„ ์ œ๊ณตํ•ด ์ค€๋‹ค. ์œ„ ํ™ˆํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ ํ›„ h2.shํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ํ™ˆ(~)์— ์„ค์น˜๋œ๋‹ค) H2 - bin - h2.sh ์‹คํ–‰ git bash๋ฅผ ์ด์šฉํ•˜๋ฉด ํŽธํ•˜๋‹ค. cd ~/H2 - cd bin - ./h2.bat ์œˆ๋„์šฐ๋Š” h2.bat (๊นƒ๋ฐฐ์‹œ์—์„œ๋Š” ./h2.bat) ์‹คํ–‰ ๋งฅ์€ ./h2.sh ์‹คํ–‰ ์ฐธ๊ณ  : ์ข…๋ฃŒ๋Š” Ctrl + c ๋กœ ์ข…๋ฃŒ. ๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ '์›น ์ฝ˜์†”&#39..

Heroku๋กœ ์Šคํ”„๋ง ์•ฑ ๋ฐฐํฌํ•˜๊ธฐ

Heroku๋กœ ์Šคํ”„๋ง ์•ฑ ๋ฐฐํฌํ•˜๊ธฐ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•, ๋กœ์น˜์˜ ๋…ธ์…˜, main์™ธ์˜ ๋ธŒ๋žœ์น˜๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ• master๊ฐ€ ์•„๋‹Œ forkํ•œ ๋ธŒ๋žœ์น˜๋ช…์œผ๋กœ ๋ฐฐํฌํ•ด์•ผ ํ–ˆ๋Š”๋ฐ ๋ช…๋ น์–ด๊ฐ€ ์กฐ๊ธˆ ๋‹ฌ๋ผ์„œ ์•ˆ ๋๋˜ ๊ฑฐ์˜€๋‹ค!! ๋„์›€ ์ฃผ์‹  ๊ทธ๋ฃน์› coco, sky ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ™‡‍โ™€๏ธ๐Ÿ™‡‍โ™€๏ธ ๋จผ์ € Heroku ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  Heroku CLI๋ฅผ ๋‹ค์šด๋กœ๋“œ, ์„ค์น˜ํ•œ๋‹ค. (https://devcenter.heroku.com/articles/deploying-spring-boot-apps-to-heroku) ํ„ฐ๋ฏธ๋„์—์„œ heroku login์„ ์ž…๋ ฅํ•˜๊ณ  ๋งŒ๋“  ํ—ค๋กœ์ฟ  ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•œ๋‹ค. heroku keys๋ฅผ ์ž…๋ ฅํ•ด SSH ํ‚ค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด heroku keys:add๋กœ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋ฐฐํฌํ•  ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ..

์ •์  ์›น, ๋™์  ์›น, MVC ์›น ํ”„๋ ˆ์ž„์›Œํฌ

MVC ์›น ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ญ”๊ฐ€์š”? MVC์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ, ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์˜์ƒ์„ ๋ณด๊ณ  ์ •๋ฆฌํ–ˆ๋‹ค. ..๋ฅผ ๋ณด๋ ค ํ–ˆ๋Š”๋ฐ ์ด ์˜์ƒ์„ ์œ„ํ•ด ์ •์  ์›น์€ ๋ญ๊ณ  ๋™์  ์›น์€ ๋ญ”๊ฐ€์š”?๋ฅผ ๋ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ํ•จ๊ป˜ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. ์ •์  ์›น static web, ๋™์  ์›น dynamic web ์ •์  ์›น static web ์–ธ์ œ ์ ‘์†ํ•ด๋„ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณด๋‚ด ์ฃผ๋Š” ์›น ์‚ฌ์ดํŠธ. ํŽธ์˜์  : ''์ค€๋น„๋œ ์Œ์‹''์„ ๋ฐ”๋กœ ๋จน๊ฑฐ๋‚˜ ๋‚ด๊ฐ€ ๊ฐ„๋‹จํžˆ ์กฐ๋ฆฌํ•ด ๋จน์Œ -> ์ •์  ์›น ์„œ๋ฒ„๋Š” html, css, js ์ฝ”๋“œ ๋ฐ ์ด๋ฏธ์ง€&๋™์˜์ƒ์„ ์ค€๋น„๋œ ๊ทธ๋Œ€๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด ์ค€๋‹ค. ๋งˆ์น˜ ์ง„์—ด๋Œ€์— ์ค€๋น„๋œ ์ƒํ’ˆ ๊ทธ๋Œ€๋กœ ์‚ฌ๊ฐ€๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ. โ“ ๋“ค์–ด๊ฐˆ ๋•Œ ๋งˆ๋‹ค ๊ฐ™์€ ํ™”๋ฉด์ธ ๊ฒƒ = ์ •์  ์›น์ธ๊ฐ€? โ— ๊ผญ ๊ทธ..

[ํ…œํ”Œ๋ฆฟ ์—”์ง„] handlebars , handlebars๋กœ HTML ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ (์ค‘๋ณต์ œ๊ฑฐ)

handlebars ํ…œํ”Œ๋ฆฟ ์—”์ง„ ์ฐธ๊ณ  : ๋ธ”๋กœ๊ทธ. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ํฐ ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ์— ๋„์›€์ด ๋˜์—ˆ๋‹ค. handlebars๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ํ•˜๋‚˜์ด๋‹ค. mustache๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ๋ฌธ๋ฒ•์ด ๊ฑฐ์˜ ๊ฐ™๋‹ค. mustache์™€์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ํ—ฌํผ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ—ฌํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ…œํ”Œ๋ฆฟ ์—”์ง„์— ๊ฐ„๋‹จํ•œ ๋กœ์ง์„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. handlebars๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ—ฌํผ๋„ ์žˆ๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ—ฌํผ๋ฅผ ๋“ฑ๋กํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. handlebars ์‚ฌ์šฉ์„ ์œ„ํ•œ ์„ค์ • (์Šคํ”„๋ง ๋ถ€ํŠธ, gradle) build.gradle dependencies์— compile 'pl.allegro.tech.boot:handlebars-spring-boot-starter:0.3.2' ์ถ”๊ฐ€..