TIL#46 Node) res.send(), res.json(), res.end()

luneah·2021년 12월 11일
0

Node

목록 보기
3/6
post-thumbnail

Express를 사용해서 작업할 때 요청 및 응답 객체에 접근할 수 있는데, 응답을 요청한 쪽에 다시 보낼 수 있다. 이 경우 Express에서는 res.send(), res.json(), res.end()와 같은 메소드를 사용할 수 있다.

1. res.send()

res.send()는 기본적으로 response를 보내는 역할을 하며 기본값이라고 할 수 있다. 기본적으로 서버에서 response 처리를 할 때 Content-type를 지정해주어야 한다.

res.send는 우리가 어떤 데이터를 보내는지 파악을 해서 이에 알맞게 Content-type을 지정해준다. 이는 Buffer, String, Object, Array일 수 있다. 기본 컨텐츠 타입은 text/html이다.

2. res.json()

res.json()은 안에 들어있는 데이터들을 자동으로 json 형식으로 바꾸어 보내준다. 웹 개발자들이 데이터를 주고 받을때 보통 RESTful API 형태로 데이터를 주고 받는다. 보통 이때 사용하는 형식은 JSON일 확률이 거의 대부분일 것이다.

📌 res.send()로도 잘 보내는데 res.json()을 왜 굳이 사용해야 할까?

res.json()은 res.send()로 JSON형태의 데이터를 보낼 때 사용할 수 없는 몇가지 기능이 있다. 아래의 두 가지 옵션을 통해 반환할 JSON 데이터의 형식을 정해줄 수 있다.

// JSON 문자열에 포함시킬 객체의 프로퍼티를 지정해주는 옵션
app.set('json replacer', replacer); 
// 들여쓰기 공백 수 지정	
app.set('json spaces', 2); 	

이 두 가지 옵션은 수집되어 내부적으로 JSON.stringify(object, replacer, space)와 같은 형식으로 전달된다. 그 후 res.json() 메소드 내부에서 res.send() 메소드가 호출되어 전송된다.

3. res.end()

응답 관련된 모든 작업이 끝나고 세션을 종료하기 위해서는 res.end()메서드를 호출해야 한다. res.end()는 모든 경우에 필수적인 메소드는 아니다.

데이터를 전송하지 않고 종료하려면 그냥 res.end()를 사용하면 된다. 404 상태를 보낼 때 유용하게 사용할 수 있다.

// 상태코드 404로 설정하고 그 후 응답을 바로 종료.
res.status(404).end();
profile
하늘이의 개발 일기

0개의 댓글