TIL.16 | express res.send()와 res.json()의 차이점

원용현·2023년 11월 3일
0

TIL

목록 보기
16/18
post-thumbnail

개인 포트폴리오 사이트를 제작하면서 모든 것을 프론트엔드 서버에서 보내주기 보다는 백엔드 서버와의 통신을 통해서 데이터를 받아오면 더 좋은 사이트가 될 것 같아서 express를 통해서 백엔드 서버를 구축하였다.

express에서는 사용자의 요청에 대해 데이터를 전송할 때, res.send()나 res.json()을 사용해서 사용자에게 데이터를 전송한다.

res.send()와 res.json()

두 메소드 모두 사용자에게 데이터를 전송하기 위해서 사용하는 메소드라는 점에서 같지만 작동하는 방식에서 차이점을 보인다.

문자열 형태의 데이터는 바로 전송하지만, 객체 형태의 데이터의 경우에는 전송하기 위해서 JSON 객체를 생성하고 해당 JSON 객체를 문자열로 변환하여 데이터를 전송한다.

사용되는 케이스

두 메소드를 실행했을 때, 호출되는 함수의 모습을 보면 다음과 같다.

  1. send(text) : text 형태의 데이터를 send 메소드로 전송하면 바로 전송된다.
  2. json(object) : object 형태의 데이터를 json 메소드로 전송하면 text로 변환된 후에 send 메소드를 호출하여 전송한다.
  3. send(object) : object 형태의 데이터를 send 메소드로 전송하면 우선 json 메소드를 호출하여 text로 변환을 진행하고 다시 send 메소드를 호출하여 전송한다.

위의 세가지 형태가 주로 사용될텐데 주목할 점은 세번째 케이스로 object 형태의 데이터를 send 메소드로 전송할 경우 json을 호출하고 send를 다시 호출하는 형태로 불필요한 과정이 추가되어 결국 서버에게는 불필요한 리소스의 낭비가 된다.

결론

두 메소드 모두 결국에는 같은 결과를 가져온다.

하지만 보내려는 데이터의 형태에 따라서 어떤 것을 사용하는게 좋을지는 나온 결과라고 생각한다.

text는 send!
object는 json!

0개의 댓글