inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

NodeBird API 호출하기

api status 질문드립니다

211

hi-ster

작성한 질문수 20

0

cat 에서 

const tokenResult = await axios.post('http://localhost:8002/v1/token', {
        clientSecret: process.env.CLIENT_SECRET,
      });

일부로 없는 client_secret으로 응답했을때

const domain = await Domain.findOne({
      where: { clientSecret },
      include: {
        model: User,
        attribute: ['nick', 'id'],
      },
    });
   
    if (!domain) {
      return res.status(401).json({
        code: 401,
        message: '등록되지 않은 도메인입니다. 먼저 도메인을 등록하세요',
      });
  }

여기서 domian null값찍히고 res.status(401).json으로 응답 받구

POST /v1/token 401 38.669 ms - 100

찍히는거 확인했습니다.

GET /test 500 54.443 ms - 575

근데 여기서 500애러를 바로 떨궈버리는데 맞는건가요??

else { // 토큰 발급 실패
        return res.json(tokenResult.data); // 발급 실패 사유 응답
    }

여기가 언제걸리는지 궁금합니다.

그리고 cat에서 

router.get('/test', async (req, res, next) => { // 토큰 테스트 라우터
  try {
    if (!req.session.jwt) { // 세션에 토큰이 없으면 토큰 발급 시도
      const tokenResult = await axios.post('http://localhost:8002/v1/token', {
        clientSecret: process.env.CLIENT_SECRET,
      });
      if (tokenResult.data && tokenResult.data.code === 200) { // 토큰 발급 성공
        req.session.jwt = tokenResult.data.token; // 세션에 토큰 저장
      } else { // 토큰 발급 실패
        return res.json(tokenResult.data); // 발급 실패 사유 응답
      }
    }
    // 발급받은 토큰 테스트
    const result = await axios.get('http://localhost:8002/v1/test', {
      headers: { authorization: req.session.jwt },
    });
    return res.json(result.data);
  } catch (error) {
    console.error(error);
    if (error.response.status === 419) { // 토큰 만료 시
      return res.json(error.response.data);
    }
    return next(error);
  }
});

 

여기서 응답했을때 nodebirdapi에서

if(error.name == 'TokenExpiredError'){
        return res.status(419).json({
          code : 419,
          message:'토큰이 만료되었습니다.'
        });
      }
      return res.status(401).json({
        code : 401,
        message:'유효하지 않은 토큰입니다.'
    });

res.status.400번대인애들은

바로 catch에 걸리는건가요?

return res.json(tokenResult.data); // 발급 실패 사유 응답

그럼 얘는 의미없는거 아닌가하고 질문드립니다.

 

Sequelize nodejs mongodb mysql

답변 1

0

제로초(조현영)

네 axios의 status가 400번대나 500번대면 catch로 갑니다. catch로 가면 따로 res.json하지 않는 이상 next(err)가 되어 500 에러가 돼서 GET /test가 500입니다.

res.json(tokenResult.data)는 의미가 없네요.

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

932

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

388

1

리뉴얼 강의 및 공부 방법

0

591

1

jwt decode

0

1139

1

node.js 교과서 3판 질문드립니다

0

399

1

passport와 jwt

0

439

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

360

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

491

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

512

2

nunjucks res.render('error'); 작동을 안합니다.

0

521

1

질문있습니다.

0

349

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3547

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

multer 사용시 file 외 name값은 못받나용?

0

431

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

294

1

Strategy의 done에 대해 질문드립니다.

0

375

1

안녕하세요 fs 권한 관련 질문드립니다

0

457

1

시퀄라이즈 연결질문...

0

511

2

res.setHeader vs res.cookie

0

1799

3