Routing refers to determining how an application responds to a client request to a particular endpoint, which is a URI (or path) and a specific HTTP request method (GET, POST, and so on).
Each route can have one or more handler functions, which are executed when the route is matched.
위의 문장들은 express 공식 문서에서 기초 라우팅에 적혀있는 내용을 그대로 옮겨적은 것이다. 쉽게 말하면 Routing이라는 것은 클라이언트 요청에 어떻게 응답할 것인지를 결정해주는 것이라고 할 수있다.
특정 endpoint 즉, 특정 URI(path, 과거 URL)로 들어온 HTTP 요청 메소드(GET, POST 같은) 것들에 대해서 요청이 들어오게 되면 어떤 방식으로 응답할 것인지 분기 시켜주는 것이다.
요청하는 path와 요청하는 메소드(GET, POST..)가 정확하게 일치되게 되면 특정 라우팅에서 해당 요청에 대한 처리를 맡게 되고, 해당 라우팅의 콜백에 의해서 응답처리가 이루어진다.
기본적으로 express 서버 응답 라우터는 다음과 같이 생성하게 된다.
app.get('/user/userinfo', userController);
위의 라우터를 설명하면 HTTP/HTTPS의 GET 요청에 대해서, '/user/userinfo'라는 URI(path, URL...)로 들어오게된 요청에 대해서, userController라는 Handler를 사용해서 응답하게 된다는 이야기이다. 서버에 들어오는 요청은 데이터 요청인지 수정 요청인지 삭제인지, 혹은 어떤 것을 삭제할 것인지 어떤 것을 추가하는지와 같이 성격이 다르다. 해당 요청을 체처럼 걸러서 이에 적절한 응답을 해줄 수 있도록 서버를 구성하는 것이 라우팅 구성이라고 생각하면 되겠다.
- root route(/)에 대해 들어온 모든 요청에 대해서 'Hello World'로 응답하기
app.all('/', function (req, res) { res.send('Hello World!') });
- root route (/) 에 대해서 post 요청이 들어왔을 때,
'Got a POST request'라는 문자열로 응답하기app.post('/', function (req, res) { res.send('Got a POST request') });
- 유저 라우터(/user) 에 대해서 put 요청이 들어왔을 때,
'Got a PUT request at /user'라는 문자열로 응답하기app.put('/user', function (req, res) { res.send('Got a PUT request at /user') });
- root route (/)에 대해서 delete 요청이 들어왔을 때, 'Got a DELETE request at /user'로 응답하기
app.delete('/user', function (req, res) { res.send('Got a DELETE request at /user') });