res.end ()는 node.js를 사용하여 express에서 호출해야합니까?


89

Express 응용 프로그램 이 여러 개 있는데 일부 모듈에서는 res.end()요청 처리기의 끝 ( res.send또는 이후 res.json)에서 호출되는 반면 다른 모듈에서는 호출 되지 않습니다.

예를 들면 :

app.get('/test', function(req, res) {
    res.send('Test', 200);
});

또는:

app.get('/test', function(req, res) {
    res.send('Test', 200);
    res.end();
});

두 경우 모두 작동하지만 많은 요청을 실행할 때 누수 또는 파일 설명자 실행 등이 두렵습니다. 어느 것이 "더 정확"합니까?


2
나는 res.send()방아쇠를 당겼다 고 생각했습니다 res.end().
tymeJV 2013

3
@tymeJV 네 말이 맞아, 그것은 수행합니다 github.com/visionmedia/express/blob/master/lib/response.js#L154 )
JayQuerie.com

트레버 - 수석 @ 감사, 나는 바로 그 해당 파일을 찾고 있었고, 난 ... 그것을 보지 못했다
greuze

@greuze 나는 전에 그것을 찾아 보았으므로 먼저 시작했습니다. :). 나는 계속해서 다른 사람들을 위해 더 구조화 된 답변으로 댓글을 옮겼습니다.
JayQuerie.com 2013

안녕하세요. 그리고 res.status (<any>). json (); 그리고 또 다른 질문이 있습니다. 전화를 거부하는 경우 어떤 오류 코드를 다시 보내야합니까? 사용자가 자신의 한도를 초과 했습니까?
9me

답변:


120

귀하의 질문에 대한 대답은 아니오입니다. 전화 res.end()하면 전화 할 필요가 없습니다 res.send(). 당신을 res.send()부릅니다 res.end().

/lib/response.js 에서 가져 왔으며 다음은 res.send()함수 의 끝입니다 .

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}

4
아마 내 기억은 마침내 :) 좋아지고
tymeJV

8

end () 함수를 호출해야하는 한 가지 예는 버퍼를 다운로드 할 파일로 보내는 경우입니다.

res.write(buffer);
res.end();

5

res.end([data] [, encoding])

응답 프로세스를 종료합니다. 이 방법은 실제로 Node core , 특히 response.end() method of http.ServerResponse. 데이터없이 응답을 빠르게 종료하는 데 사용합니다.

데이터로 응답해야하는 경우 대신 다음과 같은 방법을 사용하십시오. res.send() and res.json().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.