클라이언트는 서버에 URI 및 특정한 HTTP 요청 메소드로 요청을 전달한다
이러한 클라이언트 요청에 응답하는 방법을 결정하는것을 라우팅이라 한다
각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때 실행된다
라우트의 구조

Express는 HTTP 메소드에 해당하는 다음과 같은 라우팅 메소드를 지원한다
주요 메서드
클라이언트 요청에 따라 라우트가 일치할 경우 실행되는 콜백 함수
라우트 핸들러의 매개변수
req: Request로 클라이언트의 요청 정보를 담고 있음res: Response로 클라이언트에게 응답하기 위한 정보를 담고 있음next: 다음 미들웨어 함수를 가리키는 Object서버에서 응답하지 않은 경우에 클라이언트는 응답을 받기 못하고 정지된 상태를 유지함으로 다음 메서드 중 한 가지 방법으로 응답해야 한다
res.download() : 다운로드될 파일을 전송한다
res.end() : 응답 프로세스를 종료한다
res.json() : JSON 응답을 전송한다
res.jsonp() : JSONP 지원을 통해 JSON 응답을 전송한다
res.redirect() : 요청 경로를 재지정한다
res.render() : view template을 렌더링한다
res.send() : 다양한 유형의 응답을 전송한다
res.sendFile() : 파일을 옥텟 스트림(이메일이나 http에서 사용되는 content-type에서 application의 형식이 지정되어 있지 않은 경우에 octet-stream이라고 한다)의 형태로 전송한다
res.sendStatus() : 응답 상태 코드(response status code)를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송한다
const express = require('express');
const router =express.Router();
router.get('/', (req,res,next) =>{
res.send('respond with a resource');
});
module.exports = router; //만든 라우터 모듈을 내보낸다
작성된 라우터 모듈은 app에 use함수로 연경하여 사용한다.
const userRouter=require('./routes/users');
const app = express();
app.use('/users', userRouter);
라우팅에 적용되는 함수를 리퀘스트 핸들러라고 한다.
HTTP 요청과 응답을 다룰 수 있는 함수로 설정된 라우팅 경로에 해당하는 요청이 들어오면 리퀘스트 핸들러함수가 실행된다.

Request객체
HTTP요청 정보를 가진 객체로 요청의 path parameter, queryparameter, body, header등을 확인 가능
Request객체의 주요값 및 함수
