[Node+MongoDB] 환경변수(dotenv설치 및 셋팅) / 미들웨어

김나나·2024년 8월 29일

Node.js

목록 보기
25/50

환경변수란?

: 개발자나 컴퓨터에 따라 달라져야 하는 변수

환경변수는 별도 파일에 보관하는게 나중에 유지보수하기 쉽고 편리하다.

앞전에 firebase DB를 사용해서 REACT 프로젝트 할 때도 썼었지만,
좋은 건 여러 번 쓰며 익숙해지는 것도 중요한 것 같다.

... 그 말은 dotenv 설치하자는 뜻,,,^^


✨dotenv 설치 및 셋팅

  1. 터미널에 npm install dotenv 입력 후 설치

  2. 서버파일 상단에 아래처럼 코드 작성해줌

require('dotenv').config()

  1. 서버파일과 동일한 위치에 .env파일 하나 생성

  2. .env파일에 셋팅을 위한 코드 작성
    ~참고로 .env는 환경변수 보관용 파일이라 생각하면 된다.~
    변수명 : 변수에 저장할 값 형식으로 입력해주면 된다.

예를들어, 지금 server.js파일에 포트번호가..

8080을 쓰고있다고 한다면,

.env에서 아래처럼 작성하고

server.js에서 해당 8080이 필요한 부분에
process.env.변수명을 사용해주면 된다.

하는김에 URL도 빼주자,

참고로 .env파일에 문자형식으로 넣을 때는 ""큰따옴표를 사용해줘야한다.


✨middleware(미들웨어)

만약 API에 자주 출현하는 코드가 있다면, 하나하나 다 적기에는 가독성도 떨어지고 괜히 쓸데없이 코드 길이만 길어질 때가 왕왕 존재한다..
이럴 때 미들웨어를 사용해보자.

  1. 예를들어 아래같은 if문이 중복되게 사용된다고 가정해보자
if (!요청.user){
  응답.send('로그인하세요')
}

이런 코드가

여기도 저기도 이렇게 쓰인다고 한다면,
함수를 만들어 넣어주는 방법을 생각해내게 될 것인데..

function 함수(요청, 응답){
  if (!요청.user){
    응답.send('로그인하세요')
  }
}

이제 해당 코드가 필요한 부분에

이렇게...
그런데 이렇게 사용하지 않고 요청과 응답 사이에 넣어 실행시킬 수도 있다는 이야기~

이런 식으로..!

이렇게 작성하게 되면, 이 미들웨어가 먼저 실행되고 이후 코드를 실행시켜준다.

참고로!!! 미들웨어로 작성할 때는 파라미터가 추가된다!!!

미들웨어 함수의 장점은..

이런 식으로 요청이나 응답을 자유롭게 사용이 가능하고,
미들웨어를 사용하면서는 꼭 마지막에 next()를 넣어주어
코드 실행의 끝을 알려줘야한다. (무한 대기 상태에 들어갈 수 있음..ㅎ)



+추가1)
함수를 새로 생성해주기가 귀찮?으면 아래처럼 바로 집어넣어도 된다.


+추가2)
대괄호[] 사용하여 여러 개의 미들웨어를 넣을 수도 있다.


+추가3)
코드가 길고, 사용해야하는 범위가 넓어 위 두 가지 방법 다 힘든 경우에는
app.use를 활용해주자.

app.use(함수명);

해당 코드 아래에 있는 모든 API는 해당 함수명 미들웨어가 적용된다.


+추가4)
하지만 API 전체 말고 원하는 ROUTE에만 적용하고 싶다면
app.use('/URL', 함수명);으로 작성한 URL에서 요청이 오는 경우에만 골라서 해당 미들웨어를 적용시킬 수 있다.(하위 URL까지도 적용된다는 뜻 /URL/~~/~~~이런것도!


Q1) 누가 /list로 시작하는 API로 요청시 현재 시간을 터미널에 출력하고 싶은 경우

(미들웨어 사용!)


함수 만들어서 넣어줘도 되는 것 같지만 귀찮으니 그냥 app.use에 한 번에 넣어주었다..

해결~

Q2) 로그인시, 회원가입시 유저가 아이디, 비번을 전송하고 있는데 ID와 PW부분이 빈칸이면 빈칸을 채워주라고 응답해주는 미들웨어 작성

이후 테스트 해보면

잘 나온당

profile
10분의 정리로 10시간을 아낄 수 있다는 마음으로 글을 작성하고 있습니다💕

0개의 댓글