본문으로 건너뛰기

Study

middleware?

express는 미들웨어를 담당한다고 한다. 미들웨어란 무엇일까? 클라이언트에서 요청을 하면, 서버는 응답을 하는데, 그 과정에서 express는 이를 가져와 처리할 수 있고, 이 express에 대해 미들웨어라고 표현한다.
.use를 통해 전역적인 조건을 부여할 수도 있고, .get등을 통해 지역적인 조건을 부여할 수도 있다.

라우트

node.js에서 Route가 의미하는 것은 클라이언트의 요청을 받아 처리하는 방법을 정의하는 것이다.

SSR CSR

잘 아는 것은 아니지만. 서버에서 렌더링 되는 것과 클라이언트에서 렌더링이 된다는 것. SSR이 초기 로딩이 빠르고, 이후의 변화가 느리다면 CSR은 그 반대 등 장단점이 있다.
리액트는 무조건 적으로 CSR인 반면, NEXT는 원하는대로 지정이 가능하다

node+express

의존성을 몇 개 추가로 설치했다.

body-parser

기본적으로 클라이언트의 요청(req)의 body에 접근이 불가능하다. req.body에 접근하기 위해 파싱(해석)이 필요한데, body-parser가 파싱을 해준다.

nodemon

node.js자체는 코드가 수정되었을 때 react처럼 자동수정되지 않는다.
nodemon 설치 후, package.json의 script에 "start": "nodemon app.js"를 추가하면 코드가 수정되었을 때 자동으로 재 렌더링 된다.

express-validator

express의 get, post등의 요청에 대해 유효성검사를 할 수 있다. 기존 path, 미들웨어 함수 사이에 위치하며, check()를 통해 실행할 수 있다.

axios

주소이름을 입력했을 때 자동으로 위도, 경도 값을 가져올 수 있다.

uuid

고유한 id 생성을 위한 라이브러리

기본 동작원리

require()를 통해 import를, module.exports=를 통해 export를 실행한다.
const express = require('express')로 express를 불러오고,
const app = express()로 express객체를 app에 담는다.
app.method() method에 여러가지 요청을 정의하여 다룰 수 있다.
use()를 사용하면 모든 요청에 반응하고, get(),post(),patch()등은 각자 메서드에 따라 반응한다.
method()의 첫번째 인자에는 path를, 두번째 인자에는 라우터를 써준다.
각 라우터에서는 req.body를 통해 body의 파라미터에 접근 가능하고, req.params.*를 통해 path의 파라미터에 접근 가능하다.
res.status().send()status에 고유번호를 적고, send에 응답을 적는다.
send() 대신 json()으로 json형식을 넘길 수 있다.
발생하는 error들에 대해서도 반응할 수 있다. 각 컨트롤러에서 throw new Error()로 에러를 던지고, 에러담당 미들웨어함수를 만들어 이를 제어한다.
다만, express에서는 비동기로 발생한 error는 처리할 수 없으므로 비동기로 발생한 error는 return next(new Error())next()를 사용해 처리한다.