(res.json은 응답을 보내는 것으로, return 을 사용하는 것이 아니다.
따라서 위 코드에서 아래의 console.log 는 실행이 된다.)
=> js 이기 때문에 리턴해야 함수가 종료된다.
(또한 위와 같이 두줄을 express에서는 아래의 한줄로 표현이 가능하다. 기본적으로 'application/json'을 express 에서 넣어준다.
추가로 res.render()도 응답을 보내는 것이다.)
(에러 처리 시 위와 같이 throw 가 아니라 try catch 문을 이용해서 발생 시킬 수도 있다. next 는 다음 미들웨어로 넘어가는게 아니냐는 의문이 있을 수 있는데, next에 인수가 없을 때만 그런것이고
인수가 들어가면 에러로 처리되어서, 다음 미들웨어로 넘어가는것이 아니라, 아래의 error 처리 미들웨어로 넘어간다.
따라서 보통 에러 처리시 위와 같이 next에 에러를 넣어서 처리한다.)
(바로 에러처리 미들웨어가 실행되면서 위 처럼 페이지가 나온다.)
+또다른 next의 기능
next('route') : 같은 라우터가 있는 경우 일단 다음 라우터로 넘어간다.
(이 경우에서 next('route')다음의 코드는 실행되지 않고 다음 라우터가 실행된다. 결국엔 현재 라우터 멈추고 다음 라우터로 이동해라
필요성 : 조건문 사용시
(조건이 참이면 다음으로 넘어가는 'route'를 쓰고 '실행되지롱'이 실행
거짓이면 나머지 '실행되나요?' 실행이 된다.)
http 에서는 stream을 모으기 위해 지저분한 코드를 작성했어야 함
세션처리 시에도 if 문으로 일일히 검사해야 했음
=> 이러한 것을 미들웨어로 다른 사람들이 만들어 놓음, 그것을 사용하는 것이 편리함
(실행 창에 위와같이 추가되는데, 클라이언트에서 어떤 요청이 왔는지 서버에 기록이 된다.385는 바이트)
(개발시 에는 'dev' 배포시에 'combined'를 한다.)
(combined 를 쓰면 위와 같이 더 자세히 보여준다.)
(cookie 문자열을 객체로 바꾸는 작업을 원래는 위처럼 긴 코드를 통해 진행함)
-> cookieParser 이용
(원래 cookie를 조작하기 위해서는 위와 같이 쭉 써줬어야 하지만 )
(이처럼 cookie-parser를 사용하면 좀더 보기 좋게 설정이 가능하다.)
(위처럼 쿠키를 clearCookie를 이용하여 삭제 할 수도 있다. expires는 필요 없으며 나머지 정보는 동일해야 한다.)
위처럼 쿠키를 먼저 암호화 하면
req.signedCookies를 통해 쿠키를 암호화하여, 위의 key를 이용하여 암호화하는데 브라우저에서 암호화 하여 해커들이 읽지 못하도록 하는 경우도 있다.
암호화 보다는 서명의 느낌
=> 예전에는 bodyParser를 따로 설치해서 사용했어야 했지만 요즘은 express 안에 들어가 있다.
(원래 위와같이 지저분하게 데이터를 스트림으로 받아서 그룹화 해야했다.)
(하지만 위와 같이 코드를 작성하면 알아서 데이터가 parsing 된다.
json() : 클라이언트에서 json 데이터를 보냈을 때 그 json 데이터를 parsing해서 아래와 같이 req.body로 넣어준다.
urlencoded : 클라이언트에서 form 데이터를 보낼때 (submit) 기본적으로 urlencoded 이다. form 을 파싱해준다.
extended : true 는 form 파싱 시 쿼리스트링을 어떻게 처리 할거냐인데 true를 추천 (qs라는 모듈을 쓴다. false 는 querystring 모듈을 쓴다.
qs 가 더 강력하기 때문에)
=> 추가적으로 form 데이터 중에 이미지와 같은 데이터는 urlencoded 가 처리를 못해서 multer를 쓰기도 한다.
(보안에 위협이 되지 않으면 데이터를 클라이언트에 두는 경우도 있다.
서버에 모든 데이터를 저장하면 무거워진다.)
(설치 한 후 위와 같이 sql 접속 가능 : 기존 깔려 있던 mysql 이라서 docker 를 같이 이용함)
(현재 있는 database 조회도 가능하다.)
(워크 벤치를 통해서 데이터를 시각화 해서 볼 수도 있다.)