웹 개발/node.js

Node.js - API 서버 ,CORS

SolartheNomad 2023. 5. 26. 11:25

API 서버란?

- 다른 어플리케이션에서 현재 프로그램 기능을 사용할 수 ㅇㅆ도록함

- 다른 웹 서비스의 기능을 사용하거나 자원을 가져올 수 있게 한다.

- 다른 사람에게 정보를 제공하고자 하는 API만 연다.

- API 서버는 별도의 서버이기 때문에, 메인 서버로부터 분리된 다른 서버이다. 따라서 서로 다른 포트 주소를 사용해야 한다. 

 

서버 - api 관계도

깃허브 참고하기 : 

 

 

JWT 토큰 사용하기 

- 토큰 기반 인증이란 사용자가 자신의 아이덴티티를 확인하고 고유한 액세스 토큰을 받을 수 있는 프로토콜을 말한다. 사용자는 토큰 유효 기간 동안 동일한 웹페이지나 앱, 혹은 그 밖에 해당 토큰으로 보호를 받는 리소스로 돌아갈 때마다 자격 증명을 다시 입력할 필요 없이 토큰이 발급된 웹사이트나 앱에 액세스할 수 있도록 한다.

 

JWT 모듈 설치하기 

npm i jsonwebtoken

 

JWT 비밀키를 .env에 저장한다. 

.env

COOKIE_SECRET = NODEJS_COOKIE_SECRET
KAKAO_ID = 5d4daf57becfd72fd9c919882552c4a6
JWT_SECRET = jwtSecret

 

미들 웨어 구성

- JWT 토큰을 검사하는 verifyToken 미들웨어 만들기

 

 

verifyToken 미들웨어 

- JWT 토큰은 req.headers.authorization에 들어있다. 

- 만료된 JWT 토큰인 경우에는 419 에러를 발생시키고, 유효하지 않은 토큰인 경우에는  401 에러를 발생시킨다.

- req.decoded에 페이로드를 넣어서 다음 미들웨어에서 사용할 수 있도록 한다.

 

 

호출 서버 만들기

- NODEBIRD API를 호출하는 서버, 즉 호스트 서버이다.

- 구분을 엄밀하게 해야하는게, 우리가 지금 만드는 서비스에는 총 3개의 서버들이 참여하고 있다. 하나는  

 

package.json 설치하기

npm init

 

모듈 불러오기

npm i axios cookie-parser dotenv express-session morgan nunjucks

 

nodemon으로 scripts 설정을 하기 위한 모듈 불러오기 

npm i -D nodemon