.ENV ์ค์ ํ๊ธฐ (feat. Vercel)
โถ api key๋ฅผ ์จ๊ธฐ๊ธฐ ์ํ ์ฉ๋ (์์ค์ฝ๋์์ ์จ๊ธฐ๊ธฐ - ๋ณด์์ฉ)
โถ FE์์ ์ฝ๋๊ฐ ์ ๋ถ ๋ ธ์ถ์ด ๋๊ธฐ ๋๋ฌธ์ api key๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ BE ๊ฐ๋ฐ์์๊ฒ ์์ฒญํด์ผ ํ๋ค.
ํ์ผ๋ช : startProject.sh
- ์
-ํ๊บผ๋ฒ์ ์ค์นํ๋ ๋ฐฉ๋ฒ
- ํ์ ์์ ์์ฃผ ์ฐ์ด์ง๋ ์์.
npm init -y // npm ์ด๊ธฐํ
npm i -D parcel vercel // parcel, vercel(์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์๋์ํค๊ธฐ ์ํจ)์ ๊ฐ๋ฐ์์กด์ฑ(devDependencies)๋ก ์ค์น
mkdir src // ํด๋ ๋ง๋ค๊ธฐ
touch src/main.js
touch index.html
// Window ์ฌ์ฉ์๋ touch ๋์ echo
- root ๊ฒฝ๋ก์ vercel.json ํ์ผ์ ์์ฑํ๋ค.
// vercel.json
{
"devCommand": "npm run dev",
"buildCommand": "npm run build"
}
// package.json
// ์ถ๊ฐ
"scripts": {
"vercel": "vercel dev"
}
ํฐ๋ฏธ๋์ 'sh startProject.sh'๋ฅผ ์ ๋ ฅํด ์คํํ๋ค.
root๊ฒฝ๋ก์ apiํด๋ ์์ฑ
- vercel์ด ํด๋น ํ๋ก์ ํธ ์์ 'api'๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํด๋๋ฅผ ์์์ ์ฐพ๋๋ค.
apiํด๋ ์์ ์ฌ์ฉํ api์ ์ด๋ฆ์ด ๋ ํ์ผ์ ์์ฑ (ํต์ ํ ํ์ผ)
npm i node-fetch@2
// node.js(์๋ฒํ๊ฒฝ)์์ fetchํจ์๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์นํด ์ค๋ค.
// * ์ต์ ๋ฒ์ ์ธ ๋ฒ์ 3์ ES Module์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฒ์ 2๋ก ์ค์นํด์ค๋ค.
- ./api/movie.js -> ํต์ ํ ํ์ผ
// ์ค์นํ node-fetch๋ฅผ ๊ฐ์ ธ์จ๋ค.
// ์์
import fetch from 'node-fetch'
const { OMDB_API_KEY } = process.env
export default async function handler(request, response) {
const { title } = JSON.parse(request.body)
const res = await fetch(`https://omdbapi.com/?apikey=${OMDB_API_KEY}&s=${title}`)
const json = await res.json()
response.status(200).json(json)
}
- ./src/main.js
// ์์
async function getMovies(title) {
const res = await fetch('/api/movie', {
method: 'POST'
body: JSON.stringify({
title
})
})
const json = await res.json()
console.log(json)
}
async function getTodos() {
const res = await fetch()
}
getMovies('frozen')
.ENV ์ค์น
npm i -D dotenv
root๊ฒฝ๋ก์ .env ํ์ผ ์์ฑ
- (์ ํ) vscode ํ์ฅ ํ๋ก๊ทธ๋จ ์ค, 'DotENV'๋ฅผ ์ค์นํ๋ฉด .envํ์ผ์์๋ ์ฝ๋ ํ์ด๋ผ์ดํ ์ด ๋๋ค.
API_KEY = <์ค์ API ํค> // ex) API_KEY = ab4d654e
// apiํค๊ฐ ๋
ธ์ถ๋๋ ํ์ผ์ ์๋์ ๊ฐ์ด ์์๋ฅผ ์ง์ ํ๊ณ fetch์ ์ค์ api key๋์ 'API_KEY'๋ก ์ง์ ํ๋ค.
// const { API_KEY } = process.env ์์ -> "./api/movie.js" ํ์ผ
๊น์ ์ฌ๋ฆฌ๊ธฐ ์ , '.gitignore'์ .envํ์ผ์ ์ถ๊ฐํ์ฌ ๊น์์ .envํ์ผ์ ์จ๊ธด๋ค.
.parcel-cache
node_modules
dist
.vercel
.env
Netlify ๋ฐฐํฌ
๊น ๋ ํฌ์ ์ฌ๋ฆฐ ํ๋ก์ ํธ๋ฅผ Netlify๋ก ๊ฐ์ ธ์จ ๋ค์,
- key์ .env์ ์ค์ ํด ๋์ ๋ณ์๋ช ์, Value์๋ apikey๊ฐ์ ๋ฃ๊ณ 'Deploy site' ๋ฒํผ์ ํด๋ฆญํ๋ค.