๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋ (118)
Bibi's DevLog ๐ค๐
REST API๊ฐ ๋ญ๊ฐ์? - ์ธํฐํ์ด์ค, API, REST API, HTTP method ์ธํฐํ์ด์ค๋? : ์ํต์ฐฝ๊ตฌ ์ฌ์ฉ์๊ฐ ๋ช ๋ น์ ์ ๋ ฅํ๊ฒ ํด์ฃผ๊ณ , ์คํ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ ๊ธฐ๋ฅ์ ํจ. ์ด๋ค ๊ธฐ๊ณ๋ฅผ ๋ง๋ค๋ฉด ์ฌ์ฉ์๊ฐ ๊ทธ ๊ธฐ๋ฅ์ ์ ๋ถ ํ์ฉํ ์ ์๋๋ก ์ ์ด์ฅ์น๋ฅผ ๋ง๋ค์ด์ผ ํจ. (TV-๋ฆฌ๋ชจ์ปจ, ์ํ๊ธฐ-๋ฒํผ, ์ปดํจํฐ-ํค๋ณด๋์ ๋ง์ฐ์ค์ฒ๋ผ. ) ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฒฝ์ฐ, ๋ฒํผ, ์คํฌ๋กค๋ฐ, ์ฌ๋ผ์ด๋, ๋ธ๋ผ์ฐ์ ์ฐฝ ๋ฑ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ ์ดํ๋๋ก ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. (UI : User Interface, ์ฌ์ฉ์ ์ธํฐํ์ด์ค) ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๊ณ-๊ธฐ๊ณ, ์ํํธ์จ์ด-์ํํธ์จ์ด ์ฌ์ด์์๋ ์๋ง์ ์์ฒญ๊ณผ ์ ๋ณด๊ตํ์ด ์ด๋ฃจ์ด์ง๋๋ฐ, ์ด๋ฅผ ์ํ ์ฐฝ๊ตฌ๋ฅผ API๋ผ๊ณ ํ๋ค. API๋? Application Programming Inte..
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 ๋จน๋ ์ผ๋ฐฅ์์ ์ ๋ํจ ๋์(-)๋ฅผ ๊ตฌ๋ถ์๋ก ํ๋ฉฐ, ๋ชจ๋..
์ฌ์ค์ ๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ ๊ฒ์ด์ง๋ง... ๊ทธ๋์ ์ธ๊ฐ, ์์ , ๋ฏธ์ ํ๋ฉฐ ๋ฐฐ์ด ๊ฑธ ์์๋๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํด ๋ณด์๋ค. (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 ๋ก ์ข ๋ฃ. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ '์น ์ฝ์'..
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๋ก ํค๋ฅผ ์ถ๊ฐํ๋ค. ๋ฐฐํฌํ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ด ์..
HTML input ๋นํ์ฑํ - disabled, readonly HTML ์ ๋ ฅ ํ๋๋ฅผ ๋นํ์ฑํ ์ํฌ ์ ์๋ค. inputํ๊ทธ์ ์์ฑ์ธ disabled ๋๋ readonly๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. disabled : ์ ๋ ฅ ํ๋ ๋นํ์ฑํ์ ํจ๊ป, ์ผ๋ก ์ ์กํด๋ ํด๋น ํ๋ ๋ด์ฉ์ ์ ์ก๋์ง ์๋๋ค. ๋ฐ์ดํฐ๋ก ๋ณด์ง ์๋๋ก ๊ฐ์ฃผํ๋ ์์ฑ์ด๋ค. โ ๊ธฐ์กด์ ๋ฐ์์ค๋ ๊ฐ์ disabled๋ก ์ค์ ํ๋ฉด ๋น ๊ฐ์ ๋ฐ์์ค๊ฒ ๋๋ ์ฃผ์ํ๋ค. readonly : ์ ๋ ฅ ํ๋๋ฅผ ๋นํ์ฑํํ์ง๋ง, ์ผ๋ก ํด๋น ํ๋์ ๋ด์ฉ์ ์ ์ก๋๋ค.
MVC ์น ํ๋ ์์ํฌ๊ฐ ๋ญ๊ฐ์? MVC์ ๋ํด ๋๋ฌด ์ดํดํ์ง ๋ชปํ๊ณ ์๋ ๊ฒ ๊ฐ์์, ์ฝ๊ฒ ์ค๋ช ํด์ฃผ๋ ์์์ ๋ณด๊ณ ์ ๋ฆฌํ๋ค. ..๋ฅผ ๋ณด๋ ค ํ๋๋ฐ ์ด ์์์ ์ํด ์ ์ ์น์ ๋ญ๊ณ ๋์ ์น์ ๋ญ๊ฐ์?๋ฅผ ๋ด์ผ ํ๋ค๊ณ ํด์ ํจ๊ป ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณด์๋ค. ์ ์ ์น static web, ๋์ ์น dynamic web ์ ์ ์น static web ์ธ์ ์ ์ํด๋ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ด ์ฃผ๋ ์น ์ฌ์ดํธ. ํธ์์ : ''์ค๋น๋ ์์''์ ๋ฐ๋ก ๋จน๊ฑฐ๋ ๋ด๊ฐ ๊ฐ๋จํ ์กฐ๋ฆฌํด ๋จน์ -> ์ ์ ์น ์๋ฒ๋ html, css, js ์ฝ๋ ๋ฐ ์ด๋ฏธ์ง&๋์์์ ์ค๋น๋ ๊ทธ๋๋ก ํด๋ผ์ด์ธํธ์ ๋ณด๋ด ์ค๋ค. ๋ง์น ์ง์ด๋์ ์ค๋น๋ ์ํ ๊ทธ๋๋ก ์ฌ๊ฐ๋ ๊ฒ๊ณผ ๊ฐ์. โ ๋ค์ด๊ฐ ๋ ๋ง๋ค ๊ฐ์ ํ๋ฉด์ธ ๊ฒ = ์ ์ ์น์ธ๊ฐ? โ ๊ผญ ๊ทธ..
[Spring] @RequestParam, @PathVariable ์ฐจ์ด ์ฐธ๊ณ : ๋ธ๋ก๊ทธ. ์๋ ์ค๋ช ์ด ์ ๋์ด ์์ด ๋๋ ๊ฐ๋จํ ์ ๋ฆฌ๋ง ํ๊ธฐ๋ก ํ๋ค. ๊ฐ์ฌํฉ๋๋ค! ๋ ๋ค Spring์์ URL์ ํตํด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ Controller์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ๋ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค. @RequestParam http://127.0.0.1?index=1&page=2 ์ ๊ฐ์ ํ์์ URL์์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ์์ฌ ๋ ์ฃผ๋ก ์ฌ์ฉ. (์ด๋ฆ&๊ฐ ์ ๋ฌ) ํ๋ผ๋ฏธํฐ ์ด๋ฆ = index, page, ... ํ๋ผ๋ฏธํฐ ๊ฐ = 1, 2 ... @GetMapping("read") public ModelAndView getFactoryRead(@RequestParam("index") int indexNum, SearchCr..
handlebars ํ ํ๋ฆฟ ์์ง ์ฐธ๊ณ : ๋ธ๋ก๊ทธ. ๊ฐ์ฌํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ค๋ช ํ๊ณ ์์ง๋ง ํฐ ๋งฅ๋ฝ์ ์ดํดํ๋ ๋ฐ์ ๋์์ด ๋์๋ค. handlebars๋ ํ ํ๋ฆฟ ์์ง์ ํ๋์ด๋ค. mustache๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ๋ฌธ๋ฒ์ด ๊ฑฐ์ ๊ฐ๋ค. mustache์์ ์ฃผ์ ์ฐจ์ด์ ์ ํฌํผ๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ด๋ค. ํฌํผ๋ฅผ ์ฌ์ฉํ๋ฉด, ํ ํ๋ฆฟ ์์ง์ ๊ฐ๋จํ ๋ก์ง์ ํฌํจ์ํฌ ์ ์๋ค. handlebars๊ฐ ์ ๊ณตํ๋ ํฌํผ๋ ์๊ณ , ์ฌ์ฉ์๊ฐ ์ง์ ํฌํผ๋ฅผ ๋ฑ๋กํด ์ฌ์ฉํ ์๋ ์๋ค. handlebars ์ฌ์ฉ์ ์ํ ์ค์ (์คํ๋ง ๋ถํธ, gradle) build.gradle dependencies์ compile 'pl.allegro.tech.boot:handlebars-spring-boot-starter:0.3.2' ์ถ๊ฐ..