Node.js - API 서버 ,CORS
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