1118 TIL shortly MVC

냐하호후·2021년 11월 18일
0

TIL

목록 보기
60/101

controller

index.js 파일 일부분

redirect: async (req, res) => {
        let found = await url.findOne({ where: { id: req.params.id } }); //url모델 찾기
        if(!found) { //github주소로 접속한게 아니라면
            return res.status(302).send(); //302메시지보냄
        }
        const result = await found.update({ visits: found.visits + 1 });
        res.redirect(result.url); //새로운 url로 redirect
      }

왜 해당 id값의 url모델을 찾지 못해야 성공일까 생각했었다.
단단히 착각을 하고있었다. 리디렉션을 위해 접속하는 주소가 https://www.github.com 라고 생각했었다. 사실 깃헙주소가 아니라 http://localhost:3000/links/1 였다.

리다이렉트의 과정은 이렇다.

  1. 클라이언트가 서버로 요청을한다.
  2. 서버가 리다이렉트 시킨다.
  3. 서버가 리다이렉트 시킨 응답값으로 다시 요청을 보낸다.

요청을 두번 보낸다는 것이다.

  1. 클라이언트가 http://localhost:3000/links/1로 접속을 요청한다.
  2. 서버에서 해당주소를 db에서 받아서 302메시지와 함께 새로운 url을 제공한다.
    이렇게하면 브라우저에서 받은 url을 바탕으로 새로운 GET요청을 하게된다.

느낀점

redirect는 저번에 봤을 때도 아리까리했는데 역시 다시봐도 헷갈린다.

참고

리다이렉트

profile
DONE is better than PERFECT

0개의 댓글

관련 채용 정보