[node.js] res.end ()와 res.send ()의 차이점은 무엇입니까?

저는 초보자이며이 Express.js두 키워드에 혼란을 느낍니다 : res.end()res.send().

그것들은 동일하거나 다른가?



답변

res.send()HTTP 응답을 보냅니다. 문법은

res.send([body])

body 매개 변수는 Buffer 객체, String, 객체 또는 Array 일 수 있습니다. 예를 들면 다음과 같습니다.

res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });

자세한 내용은 이것을 참조하십시오 .

res.end()응답 프로세스를 종료합니다. 이 방법은 실제로 노드 코어, 특히의 response.end()방법 에서 비롯됩니다 http.ServerResponse. 데이터없이 신속하게 응답을 종료하는 데 사용됩니다. 예를 들면 다음과 같습니다.

res.end();
res.status(404).end();

더 많은 정보를 원하시면 이것을 읽으십시오 .


답변

응답 헤더와 관련하여 res.end()& 간의 주요 차이점 res.send()과 왜 중요한지에 대해 조금 더 강조하고 싶습니다 .

1. res.send ()는 출력 구조를 확인하고 그에 따라 헤더 정보를 설정합니다.


    app.get('/',(req,res)=>{
       res.send('<b>hello</b>');
    });

여기에 이미지 설명을 입력하십시오


     app.get('/',(req,res)=>{
         res.send({msg:'hello'});
     });

여기에 이미지 설명을 입력하십시오

res.end ()를 사용하면 텍스트로만 응답 할 수 있으며 ” Content-Type “을 설정하지 않습니다

      app.get('/',(req,res)=>{
           res.end('<b>hello</b>');
      }); 

여기에 이미지 설명을 입력하십시오

2. res.send ()는 응답 헤더에서 “ETag”속성을 설정합니다.

      app.get('/',(req,res)=>{
            res.send('<b>hello</b>');
      });

여기에 이미지 설명을 입력하십시오

¿이 태그가 중요한 이유는 무엇입니까?
ETag HTTP 응답 헤더는 특정 버전의 리소스에 대한 식별자입니다. 웹 서버는 내용이 변경되지 않은 경우 전체 응답을 보낼 필요가 없으므로 캐시의 효율성을 높이고 대역폭을 절약 할 수 있습니다.

res.end() 이 헤더 속성을 설정하지 않습니다


답변

무엇 res.send (), 구현하는 것입니다 res.write , res.setHeadersres.end을 .
전송하는 데이터를 확인하고 올바른 헤더를 설정합니다.

그런 다음 res.write로 데이터를 스트리밍하고 결국 res.end를 사용하여 요청의 끝을 설정합니다.

예를 들어 파일 또는 대용량 데이터 세트를 스트리밍하려는 경우 수동으로 수행하려는 경우가 있습니다.이 경우 스트림을 유지하기 위해 헤더를 직접 설정하고 res.write를 사용하려고합니다 흐름.


답변

resOutgoingMessage에서 확장되는 HttpResponse 객체입니다. HTTP 응답을 보내고 연결을 닫기 위해 OutgoingMessage에 의해 구현되는 res.send호출 res.end우리는 여기에 코드를 본다


답변