웹 프로그래밍/BackEnd

[express, nodejs] res.send() VS res.json() 그리고 res.end()

Fansor 2021. 9. 16. 15:11

express를 쓰다보면 http요청을 받아 res라는 응답객체를 사용한다.

이 res를 이용해 여러 방식으로 클라이언트에게 응답을 보낸다.

 

오늘은 여러 방식중에서도 비슷한 세가지 방식(res.send, res.json 그리고 res.end)에 대해 알아보자!

 

 

res.send()

res.send()는 다음과 같이 res.send([body]) body를 인자로 받는다

body에 들어갈 수 있는 타입은 Buffer, String, Object, Array이다.

 

// Buffer 객체
res.send(Buffer.from('fansor'))

// 객체
res.send({ some: 'json' })

// String
res.send('<p>fansor</p>')

 

위와 같이 여러 타입의 인자를 넣을 수 있다.

 

res.send 메소드는 인자 타입에 따라 자동으로 Content-Type을 설정해준다.

매개 변수가 Buffer 객체인 경우 Content-Type을 "application/octet-stream"로 설정한다.

매개 변수가 문자열인 경우 Content-Type을 "text/html"로 설정한다.

매개 변수가 배열 또는 객체인 경우 Content-Type을 "application/json"로 설정한다.

 

 

res.json()

 

res.json()은 인자를 JSON으로 변환해서 body에 저장하고 응답 헤더를 application/json으로 세팅한다.

그 다음에 res.send()를 호출한다.

즉, res.send()는 res.json()의 부분집합이다!!

 

res.json({"1":"fansor","2":"chang"});

 

 

위와 같이 사용한다.

 

 

res.end()

클라이언트에게 요청을 하고나면 세션을 종료하는 작업이 필요하다. res.end()가 이 역할을 한다!!

어떠한 데이터를 담지 않고 요청을 보낸다.

res.send()도 마지막에는 세션을 종료하기 때문에 데이터를 함께 보내고 싶으면 res.send(), 그렇지 않으면 res.end()를 쓴다!!

 

 

위 세가지 메소드는 최종적으로는 같은 행동을 하지만 어떤 데이터를 처리할 것이냐에 따라 다르게 사용된다고 할 수 있다!!

 

끝!

반응형
SMALL