본문 바로가기

카테고리 없음

Express.js의 req, res객체

req 객체

 

- req.body : request를 호출할 때 body로 전달된 정보가 담긴 객체 

            > express.json() (a.k.a body-parser) Middleware를 이용하여야 해당 객체를 사용할 수 있음

            > 클라이언트의 ID / PW 등 대부분의 데이터가 body에 담기기 때문에, 자주 쓰이게 될 객체

 

- req.params : 라우터 매개 변수(Path params)에 대한 정보가 담긴 객체. ex)localhost3000/route/:userid

           > 특정 데이터를 조회할 때, 이를 간단하게 요약해서 사용할 때 주로 사용한다

           ex) 예를들어 books 라는 API가 있다고 했을 때, 전체가 아닌 특정 책에 대한 데이터를 원할때(어떠한 id에 있는 책을 조회할지), 혹은 게시글에 댓글기능을 만들 때, '어떤' 게시글에 댓글을 추가할지 등 구체적인 주소값을 정할 때 사용

 

- req.query : Request를 호출할 때 쿼리 스트링으로 전달된 정보가 담긴 객체 ( 주소값에 /? 로 전달되는 부분)

       > 오름차순, 내림차순 혹은 특정 페이지부터 전달을 하고싶을 때 주로 쓰이는 방식

 

 

- req.app : req 객체를 통해 Express.js의 app 객체에 접근할 수 있음

 

- req.ip : 요청한 Client의 ip 주소가 담겨 있음 ** 해당 정보는 이후 프로젝트에서 접속경로 추적시에 사용 가능할 것 같음

   >> 로그인 시스템을 만들거나, 해당 IP가 과도하게 많은 접속을 시도할때 해당 IP를 차단하기 위해서 사용가능

 

- req.cookies: Request를 호출할 때 Cookie 정보가 담긴 객체

           > cookie-parser Middleware 를 사용하여야 해당 객체를 사용할 수 있다

 

- req.get(Header): 헤더에 저장된 값을 가져오고 싶을 때 사용

 

res 객체

 

- res.status(코드) : Response에 HTTP 상태코드를 저장.  상태코드규약

 

- res.send(데이터) : 데이터를 포함하여 Response를 전달

          > ex) res.send('Hello World')

 

- res.json(JSON) : JSON 형식으로 Response를 전달

          > ex) res.json({ message: 'Hello World'})

 

- res.app : res 객체를 통해 Express.js의 app 객체에 접근할 수 있음

 

- res.end() : 데이터 없이 Response를 전달

 

- res.redirect(주소) : redirect할 주소와 함께 Response를 전달. 주소를 선택할 수 있게 전달하는건지 아니면 redirecting 되는지? --> 특정페이지로 이동시켜줌!

 

- res.cookie(Key, Value, Option) : 쿠키를 설정할 때 사용

 

- res.clearCookie(Key, Value, Option) : 쿠키를 제거할 때 사용  인자로 key value option을 전달하는건 지정된 쿠키만 제거하는것이 가능한것인지?  --> 특정 쿠키를 제거할 때 사용!

 

 

 

 

 

 

****** 주의할 점 ******

client가 보낸 요청 1회에 대한 응답을 서버가 1회를 초과하여 보내주게 될 시, 이미 요청한 res에 대해 비즈니스 로직을 통해 작업을 완료하고 데이터를 보내 준 상태에서 또다시 client에게 데이터를 보내주게되면, error가 발생하고 서버가 꺼지는 현상이 일어날 수 있다. (분기처리를 통해 해결해야한다)

 

 

 

한줄요약

req : body, params, query로 전달된다

body : express.json() 미들웨어를 사용해야하며, JSON 형태를 띄고있다 (key-value)

또한 Query String, Path Variable (params)와 다르게, URL 만을 가지고 어떤 데이터를 전달하였는지 알 수 없다 (PUT, POST등)

때문에 회원가입과 같이 보안이 필요한 데이터는 주로 body에 담아 사용한다

Query : ex) https://sparta.com?name=김땡땡&age=99 

게시글의 정렬, 특정 날짜의 게시글만 출력하는 옵션 설정 등등을 위해 주로 사용된다

ex) /posts?sort=desc&page=3&limit=20

>> limit=20 : 1페이지당 20개의 게시글을 조회한다

>> page=3 : 3 페이지를 조회한다

>> sort=desc : 게시글을 내림차순으로 정렬한다

Params : URL의 특정 경로를 매개 변수로써 사용한다

                특정 게시글을 선택하거나 명확한 리소스를 지정해야할 때 사용한다

                ex) 게시글의 상세 정보 조회, 사용자의 상세 정보 조회

 

 

 

res : send, json 형태로 전달한다.