웹 프로그래밍/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