์๋ 9์, ์น๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ์์ํ์ง 9๊ฐ์๋ง์ ์ฒ์์ผ๋ก ํ์ฌ์ ์ ์ฌํ ๊ธฐํ๋ฅผ ๊ฐ๊ฒ ๋์๋ค. ์ด ์ธ์ 7๋ช , ๊ทธ ์ค, ์น ํ๋ก ํธ ๊ฐ๋ฐ์ 1๋ช , ์ฑ,์น ํ๋ก ํธ ๊ฐ๋ฐ์ 1๋ช , ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์๋ ๊ฐ๋ฐ์ 1๋ช ์ธ ํ์ฌ์๊ณ , ๊ธฐ์กด์ ๊ณ์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ถ์ด ๋๊ฐ๊ฒ ๋๋ฉด์ ๋ด๊ฐ ๊ทธ์๋ฆฌ์ ๋ค์ด๊ฐ๊ฒ ๋์๋ค.
9๊ฐ์๊ฐ ์ฒ์ html, javasciprt๋ฅผ ์ ํ๋ฉด์ ์ ๋ ์ด์ธ ์นํ์ด์ง๋ฅผ ์ ์ํด๋ณด๊ณ , ์๊ฒ๋๋ง ๋ช๋ช์ ์ฌ๋๋ค๋ผ๋ฆฌ ๋ชจ์ฌ ์ดํ์ ์ถ์ํด๋ณด๋ ๊ฒฝํ์ ํด๋ณด์์ง๋ง, ํผ์์ ๋๋น์ค๊ณ, ์๋ฒ๊ฐ๋ฐ, ๋ฐฐํฌ๊น์ง ๋ชจ๋ ๋ถ๋ถ์ ๋๋งก์ ํด๋ณธ์ ์ ์์๋ค. ๋ํ mongoose๋ฅผ ์ฌ์ฉํด๋ณธ ๊ฒฝํ๋ค์ด ๋๋ถ๋ถ์ด์๊ธฐ์, mysql์ ๋ค๋ค๋ณธ ๊ฒฝํ๋ ๋งค์ฐ ์ ์๋ค. ๋ฌผ๋ก ์ดํ์ ์ถ์ํ ๋, ๊ฐ์ด ํ๋ ๊ฐ๋ฐ์๋ถ์ด ์์ฑํ๋ ๋ฐฐํฌ๊ณผ์ ์ด๋, ์ฝ๋๋ค์ ๋ณด๋ฉด์ ํผ์ ๊ณต๋ถํด๋ณด๊ธด ํ์ง๋ง, ์ด๋ ๊ฒ ํผ์์ ํ๊ฒ๋๋ค๋๊ฑด ์๊ฐ์ง ๋ชปํ๋ค. ํ์ง๋ง ํฐ ๊ฒฝํ์ด ๋ ๊ฒ ๊ฐ์๊ณ , ๋ฌด์๋ณด๋ค ์ค์ ๋ก ์ฌ์ฉ์๊ฐ ์๋ ์๋น์ค์ ๋ํด์ ์์๊ฐ๊ณ ์ถ์๋ค.
์ ์ฌ๋น์ ์ ์ ๋ช์๊ฐ ๋์ ๊ณ์ จ๋ ์๋ฒ๊ฐ๋ฐ์๋ถ์๊ฒ ๋ช๊ฐ์ง ์ธ์์ธ๊ณ๋ฅผ ๋ฐ๊ธด ํ์ง๋ง, ์ ๋ง ์งง์ ์๊ฐ์ด์๊ณ , ๋๋ฌด ๊ธด์ฅํ๋ํฐ๋ผ ๊ท์ ์ ๋ค์ด์ค์ง ์์๋ค. ๊ทธ๋ ๊ฒ ์ธ์์ธ๊ณ๊ฐ ๋๋๊ณ , ์ผ๋จ์ ๊ฐ์ฅ๋จผ์ ์ฝ๋๋ฅผ ํ์ด๋ดค์๋ค.
์ธ์์ธ๊ณ ๋ฐ์ ๋, ๋ฐฐํฌ์ผ์ ์ด ๊ธํ๋ ํฐ๋ผ ์ฝ๋๊ฐ ๋ง์ด ๋์กํ๋ค๊ณ ํ๊ธดํ์์ง๋ง, ์ฒ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ๋นํฉํ๋ ์ ์ ๋ชจ๋ ์ฝ๋๊ฐ ํ๊ณณ์ ๋ชจ์ฌ์์๋ค๋ ๊ฒ๊ณผ http๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค๋ ๊ฒ์ด์๋ค. ์ฝ๋๋ฅผ ๋ณด๊ธฐ์ ์ค์ ์ด์๋๋ ์๋น์ค๋ ์ด๋ป๊ฒ ์ฝ๋๊ฐ ์ง์ฌ์ง๊น ๋ง์ ๊ธฐ๋๊ฐ ์์์ง๋ง, ๊ธฐ๋๋ ์ฐ์ฐ์กฐ๊ฐ๋ฌ๋ค.๐ญ
์๋น์ค๋ฅผ ํตํด ๋ฌถ์ฌ์์๊ธด ํ์ง๋ง, ํ ํฐ ์ธ์ฆ๋ถํฐ ์๋ฌํธ๋ค๋ง๊น์ง ์ ๋ถ ์ปจํธ๋กค๋ฌ์์ ์ด๋ฃจ์ด์ง๊ณ ์์๊ณ , ์ฌ์ง์ด ์ธ์ฆ์ด๋ validation์ด ์๋ API๋ค์ด ๋๋ถ๋ถ์ด์๋ค. (๋ ์ฟผ๋ฆฌ๋น๋๋ orm์ด ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํด์ ์ฌ์ฉํ๊ณ ์์์ง๋ง, ๋น์์ mongoose๋ง ์ฌ์ฉํด๋ณด์๊ธฐ์ orm, ์ฟผ๋ฆฌ๋น๋, raw query์ ๋ํ ์ง์์ด ์์ด์ ๋ณ ์๊ฐ์์ด ์ง๋๊ฐ์๋ค. ๊ทธ ๋ฐ์ ๋ฑ๋ฑ.. ๋ฌธ์ ๋ค์ด ๋ง์ด ์์๋ค.)
## ์ด๋ฐ ๋๋ + ๋ชจ๋ ์๋น์ค ๋ง๋ค try catch....
router.post('/', (req,res) => {
try {
if(...){
...๋ก์ง
res.status(403).json({...})
} else if(...){
...๋ก์ง
res.status(200).json({...})
}
} catch(e){
res.status(500).json({message:'...'})
}
})
๋น์์๋ ๋ญ๊ฐ ๋ถ๋ง์ด ๋ง๊ธดํ์ง๋ง, ์ง๊ธ ์๊ฐํด๋ณด๋ฉด ํ๋ฌ๋ง์ ๋๋น ์ค๊ณ๋ถํฐ ๋ช์ญ๊ฐ์ API, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ์ด๋๊น์ง ํ๋ ค๋ฉด... ์คํ๋ ค ๋๋จํ๋จ ์๊ฐ์ด ๋ ๋ค.๐๐ป
์ฝ๋๋ฆฌ๋ทฐ ์ดํ, ๋ค์ด์ค๋ ์์ ์ฌํญ๋ค ์ด์ธ์๋ ์ ๋ถ ์ฝ๋ ์ ๋ฆฌ์ ์๊ฐ์ ๋ณด๋๋ ๊ฒ ๊ฐ๋ค. ์ปจํธ๋กค๋ฌ, ์๋น์ค ๋ถํ , ์ธ์ฆ ๋ฏธ๋ค์จ์ด, validator, ์๋ฌ ํธ๋ค๋ฌ ์ ์ ๋ฑ ๊ธํ๋ค๊ณ ์๊ฐ๋๋ ๋ถ๋ถ๋ค์ ์์ ํด๋๊ฐ๋ค. nginx์ docker๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ, nginx์ ๋ํด ์ ๋ชฐ๋ผ ๊ธํ๋๋ก ๊ทธ๋๋ง ์ต์ํ๋ aws ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด https๋ฅผ ์ ์ฉํ์๋ค.
๊ทธ๋ฌ๋ ์ด์์ค์ธ ์๋น์ค์ด๋ค ๋ณด๋, ๋ง์๋๋ก ์์ ์ ํด๋๊ฐ ์ ์์๊ณ , ๊ธฐ์กด api๋ค์ regacy๋ก ๋๊ณ ์๋ก์ด API๋ฒ์ ์ ์ ์ํ๊ธฐ๋ก ํ๋ค. ์ด๋์์ผ raw query์ ๋ถํธํจ์ ๋๋ฌด ์ ์คํ ๋๊ผ๋ค. ์์ ํ๋ฉด์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํด์ผํ๊ณ ์คํ๋ก ์ธํด ์๋ฌ๋๋์ผ์ ๋น์ผ๋น์ฌํ๋ค. ์ด ๋์์ผ, orm๊ณผ query builder์ ๋ํด ๊ณต๋ถํด๋ณด๊ธฐ ์์ํ๊ณ , ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค, ๋ฌ๋์ปค๋ธ๊ฐ ์๋ค ๋ผ๋ ์๊ธฐ๋ฅผ ๋ฃ๊ณ query builder๋ฅผ ์ ํํ๋ค. ์ง๊ธ ์๊ฐํด๋ณด๋ฉด ๋น์ฐํ orm์ ์ ํํ ๊ฒ ๊ฐ๋ค. ์๋๋ฉด query builder ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ๋ ํ๊ณ , ๋ฌด์๋ณด๋ค ํธํ๋ค.
๊ทผ๋ฐ, ๋น์๋ฅผ ์๊ฐํด๋ณด๋ฉด orm์ ์ ํํ์ ๋, orm์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ณต๋ถ๋ฅผ ํ๋๋ผ ๋ค๋ฅธ ๊ฐ๋ฐ์ด ๋ฆ์ด์ง์ง ์์์๊น ํ๋ ์๊ฐ์ด ๋ ๋ค. ๊ทธ๋ฆฌ๊ณ query builder๋ฅผ ๊ฒฝํํ ํ, orm์ ์ฌ์ฉํ๊ฒ ๋ค๋ผ๋ ๊ฒฐ์ ์ ํ์ผ๋ ์ด์ฉ๋ฉด ์ํ ์ ํ์ผ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.