[Node.js]
[Node.js] 환경변수 관리
VaIice
2024. 7. 19. 00:04
1. 환경변수 저장 라이브러리
npm install dotenv
// server.js
require('dotenv').config()
2. 환경변수 보관
// .env
PORT=8080
// server.js
// 변경 전
app.listen(8080, () => {
console.log('http://localhost:8080에서 서버 실행 중')
})
// 변경 후
app.listen(process.env.PORT, () => {
console.log('http://localhost:8080에서 서버 실행 중')
})
// mongoDB 주소
const url = process.env.DB_URL
process.env.변수명
3. middleware
API에 자주 쓰이는 코드가 있다.ex) 로그인 검사=> request.user로 검사
function loginCheck(request, response) {
if (!request.user) {
response.send('로그인을 해주세요.')
}
}
app.get('/write', (request, response) => {
loginCheck(request, response)
response.render('write.ejs')
})
이렇게 함수를 남겨도 된다.
app.get('/write', loginCheck, (request, response) => {
response.render('write.ejs')
})
하지만 파라미터 중간에 기입해도 똑같은 기능을 하는데,
request와 response 사이에 실행이 된다.
즉, API가 실행되기 전에, 중간에 있는 함수부터 실행이 되는데
이를 middleware라고 부른다.
request, response 마음대로 사용 가능
최소 3개의 파라미터를 집어넣어야한다. (request, response, next 필수)
function loginCheck(request, response, next) {
if (!request.user) {
response.send('로그인을 해주세요.')
}
next()
}
next(): 다음 코드 실행
app.get('/write', (request, response) => { }, (request, response) => {
response.render('write.ejs')
})
이렇게도 가능하다.
app.get('/write', [loginCheck, ... , ...], (request, response) => {
response.render('write.ejs')
})
[middelware1, middleware2, ...]로 여러 개 사용 가능
Q. 만약 API 수 백 개에 middelware를 적용하고 싶다면?
app.use(loginCheck)
밑에 있는 모든 API에 middleware 적용
app.use('/URL', loginCheck)
/URL로 API가 요청됐을 때, middleware 실행
그러나 /URL/...에서도 적용
Q1. /list로 시작하는 API에 현재 시간 출력
app.use('/list', printTime)
function printTime(request, response, next) {
let time = new Date();
console.log(time);
next()
}
만약 실행이 안 된다면, app.use('/list')를 list API보다 위에 놓자.
Q2. 로그인, 회원가입 시 ID, PW 공백 체크
function checkBlank(request, response, next) {
if (!request.body.username) {
response.send('아이디를 입력해주세요!!!')
}
else if (!request.body.password) {
response.send('비밀번호를 입력해주세요!!!')
}
next()
}
app.post('/login', checkBlank, (request, response, next) => {
app.post('/signUp', checkBlank, async (request, response) => {