일반적으로 서버는 다양한 URL 요청에 다르게 응답해야 합니다. 요청된 URL과 기타 필수 GET 및 POST 매개변수를 경로에 제공해야 하며, 그런 다음 경로는 이러한 데이터를 기반으로 해당 코드를 실행해야 합니다. 필요한 모든 데이터는 onRequest() 콜백 함수의 첫 번째 매개변수로 전달되는 요청 객체에 포함됩니다. 이 데이터를 구문 분석하려면 추가 모듈, 즉 url 및 querystring 모듈을 호출해야 합니다.
URL:이것
모듈에는 URL 확인 및 구문 분석을 위한 유틸리티가 있습니다.
에 require('url')을 호출하세요.
사용하세요.
구문 분석된 URL 객체에는 URL 문자열에 존재하는지 여부에 따라 다음 필드 중 일부 또는 전부가 있습니다. URL 문자열에 없는 부분은 구문 분석된 객체에 포함되지 않습니다.
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
href: 원래 구문 분석된 전체 URL은 프로토콜과 호스트 모두 소문자입니다.
예: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
프로토콜: 요청 프로토콜, 소문자.
예: 'http:'
호스트: 포트 정보를 포함하여 URL의 전체 소문자 호스트 부분입니다.
예: 'host.com:8080'
auth: URL의 인증 정보 부분.
예: '사용자:패스'
호스트 이름: 호스트의 소문자 호스트 이름 부분입니다.
예: 'host.com'
port: 호스트의 포트 번호 부분.
예: '8080'
경로 이름: 호스트 뒤, 쿼리 앞에 오는 URL의 경로 섹션(있는 경우 초기 슬래시 포함).
예: '/p/a/t/h'
검색: 선행 물음표를 포함하는 URL의 '쿼리 문자열' 부분입니다.
예: '?query=string'
path: 경로명과 검색어를 연결한 것입니다.
예: '/p/a/t/h?query=string'
쿼리: 쿼리 문자열의 'params' 부분 또는 쿼리 문자열이 구문 분석된 개체입니다.
예: 'query=string' 또는 {'query':'string'}
해시: 파운드 기호를 포함하는 URL의 '조각' 부분.
예: '#hash'
종속성 주입을 사용하여 느슨하게 라우팅 모듈을 추가하겠습니다. 라우팅 대상인 함수를 요청 핸들러라고 합니다. 요청 처리 함수를 구현하려면 requestHandlers라는 모듈을 만들어야 합니다. 물론 다른 이름으로 지정할 수도 있습니다. 그리고 각 요청 핸들러에 대해 자리 표시자 함수를 추가한 다음 이러한 함수를 모듈 메소드로 내보내 요청 핸들러와 라우팅 모듈을 연결하여 라우팅을 따를 수 있도록 합니다.
특히, 일련의 요청 핸들러는 객체를 통해 전달되어야 하며, 이 객체는 느슨하게 결합된 방식으로 Route() 함수에 주입되어야 합니다.
연관 배열에서 요소를 가져오는 것과 동일한 방식으로 전달된 개체에서 요청 처리 기능을 가져올 수 있으므로, handler[경로 이름]();과 같은 간단하고 부드러운 표현이 있습니다. 코드는 다음과 같습니다.
var handle = {} handle["/"] = requestHandlers.start; handle["/start"] = requestHandlers.start; handle["/upload"] = requestHandlers.upload;