ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [express, nodejs] res.send() VS res.json() 그리고 res.end()
    웹 프로그래밍/BackEnd 2021. 9. 16. 15:11
    728x90
    반응형

    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()를 쓴다!!

     

     

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

     

    끝!

    728x90
    반응형
    SMALL
Designed by Tistory.