2013-05-14 5 views
10

Nodej를 사용하여 Restify를 사용하고 있으며 스택의 다음 미들웨어로 컨트롤을 반환하는 올바른 방법에 대한 질문이 있습니다. 나는 "스택의 다음 미들웨어"라고 말할 때 정확한 구문을 사용하기를 바랍니다.Restify Middleware - 스택의 다음 미들웨어를 올바르게 호출합니다.

기본적으로, 내 코드는 다음과 같습니다

//server is the server created using Restify 
server.use(function (req, res, next) { 
    //if some checks are a success 
    return next(); 
}); 

를 자, 내가 알고 싶은 코드가 return next();해야이거나 스택의 다음에 제어를 전달하는 단지 next();을해야 하는가?

두 작업 모두 - 코드 조각이 성공적으로 컨트롤을 전달하고 예상대로 데이터를 반환합니다. 두 가지 사이에 차이가 있고 다른 것을 사용해야하는 경우 알고 싶습니다. .

답변

17

아무런 차이가 없습니다. Restify 소스를 살펴 봤는데 미들웨어의 반환 값으로는 아무 것도하지 않는 것 같습니다.

if (someCondition) 
    next(); 
res.send(...); // !!! oops! we already called the next middleware *and* we're 
       //  sending a response ourselves! 
+1

안녕하세요, 당신이 다음 콜백을 무엇을하고 있는가 '에 내 질문에 대답을 할 수 있습니다 : 그것은이 같은 오류를 방지 할 수

// using this... if (someCondition) { return next(); } res.send(...); // instead of... if (someCondition) { next(); } else { res.send(...); }; 

:

return next()을 사용하는 이유는 순전히 편의상의 문제입니다 http 핸들러? server.get ('/', function (req, res, next) {res.end();}) 다음 호출해야합니까? –

+1

@vp_arth 응답을 어떤 방식 으로든 보내면 요청을 끝내지 않으면 next()를 사용하여 다음 경로/미들웨어/(오류) 핸들러로 제어를 넘겨 줄 수 있습니다 – robertklep

관련 문제