그런 다음 요청 핸들러가 의미 있는 정보를 반환할 수 있도록 서버를 수정합니다.
구현 방법을 살펴보겠습니다.
1. 요청 핸들러가 onRequest 함수를 통해 사용자에게 표시하려는 정보를 직접 반환(return())하도록 합니다.
2. 요청 핸들러가 브라우저에 표시해야 하는 정보를 반환하도록 하는 것부터 시작해 보겠습니다.
requestHandler.js를 다음 형식으로 수정해야 합니다.
함수 시작() {
console.log("요청 핸들러 'start'가 호출되었습니다.");
"Hello Start"를 반환합니다.
}
함수 업로드() {
console.log("요청 핸들러 '업로드'가 호출되었습니다.");
"안녕하세요 업로드"를 반환합니다.
}
수출.시작 = 시작;
수출.업로드 = 업로드;
마찬가지로 요청 라우팅에서는 요청 핸들러가 반환한 정보를 서버에 반환해야 합니다.
따라서 router.js를 다음과 같은 형식으로 수정해야 합니다.
함수 경로(핸들, 경로명) {
console.log("pathname에 대한 요청을 라우팅하려고 합니다.");
if (typeof 핸들[경로 이름] === '함수') {
반환 핸들[경로 이름]();
} 그 밖의 {
console.log("경로명에 대한 요청 핸들러를 찾을 수 없습니다.");
"404 찾을 수 없음"을 반환합니다.
}
}
수출.경로=경로;
위 코드에서 볼 수 있듯이 요청을 라우팅할 수 없는 경우 관련 오류 정보도 반환합니다.
마지막으로 다음과 같이 요청 경로를 통해 요청 핸들러가 반환한 콘텐츠로 브라우저에 응답하도록 server.js를 리팩터링해야 합니다.
var http = require("http");
var url = require("url");
함수 시작(경로, 핸들) {
함수 onRequest(요청, 응답) {
var 경로명 = url.parse(request.url).pathname;
console.log("" pathname "에 대한 요청이 수신되었습니다.");
response.writeHead(200, {"Content-Type": "text/plain"});
var content = 경로(핸들, 경로명);
response.write(content);
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("서버가 시작되었습니다.");
}
수출.시작=시작;
리팩터링된 애플리케이션을 실행하는 경우:
http://localhost:8888/start를 요청하면 브라우저에 "Hello Start"가 출력됩니다.
http://localhost:8888/upload를 요청하면 "Hello Upload"가 출력됩니다.
그리고 http://localhost:8888/foo를 요청하면 "404 찾을 수 없음"이 출력됩니다.
다음 섹션에서는 차단 작업이라는 개념에 대해 알아보겠습니다.