source

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

bestscript 2023. 5. 20. 23:34

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

저는 초보입니다Express.js그리고 저는 이 두 가지 키워드로 인해 혼란스럽습니다.res.end()그리고.res.send().

그들은 같은가요, 다른가요?

일단은.res.send()그리고.res.end()같지 않습니다.

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

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>');
      }); 

여기에 이미지 설명 입력

res.send()는 응답 헤더에 "ETAG" 특성을 설정합니다.

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

여기에 이미지 설명 입력

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

res.end()이 헤더 특성을 설정하지 않음

일단은.res.send()그리고.res.end()다릅니다.

res.send()HTTP 응답을 보냅니다.구문은 다음과 같습니다.

res.send([body])

본문 매개 변수는 버퍼 개체, 문자열, 개체 또는 배열일 수 있습니다.예:

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.send()도구들res.write,res.setHeaders그리고.res.end:

  1. 사용자가 보내는 데이터를 확인하고 올바른 응답 헤더를 설정합니다.
  2. 그런 다음 데이터를 스트리밍합니다.res.write.
  3. 마지막으로, 그것은 사용합니다.res.end요청의 끝을 설정합니다.

파일이나 대용량 데이터 세트를 스트리밍하려는 경우와 같이 수동으로 이 작업을 수행하려는 경우가 있습니다.이러한 경우에는 머리글을 직접 설정하고 사용할 수 있습니다.res.write흐름을 유지하기 위해.

훌륭한 답변 외에도 여기서 강조하고 싶은 것은 언제 res.end()를 사용해야 하는지와 언제 res.send()사용해야 하는지입니다. 이것이 제가 원래 여기에 착륙했지만 해결책을 찾지 못한 이유입니다.

답은 매우 간단합니다.

res.end()는 데이터를 보내지 않고 응답을 빠르게 종료하는 데 사용됩니다.

예를 들어 서버에서 프로세스를 시작할 수 있습니다.

app.get(/start-service, (req, res) => {
   // Some logic here
   exec('./application'); // dummy code
   res.end();
});

응답으로 데이터를 보내려면 다음 대신 res.send()를 사용해야 합니다.

app.get(/start-service, (req, res) => {
   res.send('{"age":22}');
});

자세한 내용은 여기에서 확인할 수 있습니다.

res.send() 때 합니다.res.end()보내는 응답을 종료하는 데 사용됩니다.

res.send()으로 동으호출을 호출합니다.res.end()그서전화언할급필없다습니요가을래나▁or다없▁after▁so▁it니습▁mention▁don 뒤에 전화하거나 언급할 필요가 없습니다.res.send()

res발신 메시지에서 확장되는 HttpResponse 개체입니다. res.send 출들res.endHTTP 응답을 보내고 연결을 닫기 위해 발신 메시지에 의해 구현됩니다.여기 코드가 표시됩니다.

언급URL : https://stackoverflow.com/questions/29555290/what-is-the-difference-between-res-end-and-res-send