소개
게시글
질문&답변
10.4 토큰테스트에는 표시되지만 api 서버에는 유효하지 않다고 나와요.
브라우저에다 localhost:8002/v1/test 를 입력하시면 안됩니다.'localhost:8002/v1/test' 주소는 nodecat 서버, 즉 클라이언트 측에서 이미 토큰을 발급받은 상태에서, 토큰의 유효성 검사를 하기 위한 주소입니다.// /v1/test router.get('/test', verifyToken, tokenTest); 이 코드에서도 알 수 있듯이 'localhost:8002/v1/test' 주소로 Get 요청을 보내게 되면 verifyToken 미들웨어로 가게 되는데, 그곳에서 가장 먼저 하는 일은 req.headers.authorization 안에 JWT를 검증하는 것입니다.브라우저에다 'localhost:8002/v1/test' 를 바로 입력할 때 우리는 req.headers.authorization 안에 토큰따위 담아 보낸 적이 없으니, 바로 밑에 있는 에러처리 코드로 넘어가게 되는 것입니다. (요부분)return res.status(401).json({ code: 401, message: '유효하지 않은 토큰입니다.' })그래서 유효하지 않은 토큰이라고 뜨게 됩니다.
- 0
- 2
- 389
질문&답변
에러 처리 방법
console.error(err); next(err);의 경우에는 서버 내부에서만 에러처리를 하지만,res.status(50X).json()의 경우에는 에러를 에러 정보와 함께 클라이언트에게 전송합니다. 뒷 부분 강의 보시다 보면 클라이언트 코드를 짜는 부분 (nodecat, lecture-call)이 있는데, 그쪽 영상을 듣다 보면 그 둘의 차이점과 언제 무엇을 어떻게 써야 하는지 알게 되실 겁니다.
- 0
- 2
- 49
질문&답변
9장 데이터베이스 세팅하기 질문있습니다.
class Hashtag extends Sequelize.Model { static init(sequelize) { Hashtag.init({위처럼 작성자 분이 작성하신 코드대로 갔을 때 무한 재귀함수가 발생하는 이유는, Hashtag.init() 함수를 정의하는 곳 (2번째 줄) 안에서 다시 Hashtag.init() 함수를 호출 (3번째 줄) 하기 때문입니다.super.init() 을 활용하는 방식은 Sequelize 5버전에서 일반적으로 사용되던 방식입니다. Sequelize 6 버전 이후부터는 모델 정의 시 Model.init을 직접 호출하는 방식이 권장되니, 제로초님의 방식대로 하는 것이 좋아 보입니다.
- 0
- 3
- 54
질문&답변
app.js 에서 sequelize 를 가져오는 부분이 models/index.js 있는 sequelize 를 가르키는게 맞나요?
const { sequelize } = require('./models');require 함수에서./models 까지만 경로를 지정해도, 자동으로 models 폴더 안에 있는 index.js 라는 이름의 파일을 가져오는 것으로 알고 있습니다.
- 0
- 2
- 132
질문&답변
sequelize initiate() 쓰는 방식 최신인지, 공식문서 방법인지 궁금합니다
네 맞습니다. initiate함수는 sequelize에서 제공하는 메소드가 아닙니다. initiate 라는 이름 대신 다른 이름을 사용해도 됩니다. 제로초님은 static 메소드를 활용함으로써, User의 인스턴스 없이 User.initiate() 이런 식으로 바로 사용하는 방식을 선택하신 것 같습니다. 나중에 메소드 호출할 때를 생각해보면 제로초님의 방식이 깔끔한 것 같네요!
- 0
- 2
- 352