이 문서는 다음의 공식 express를 참조하여 만들어졌습니다.
https://expressjs.com/en/guide/routing.html
우선, express로 서버를 세팅하기 위한 기본적인 코드를 작성해보자.
const express = require('express');
const app = express();
const port = 3000; //포트번호 설정
//아래의 예제 코드를 이 부분에 집어넣읍시다.
app.listen(port, () => console.log(`Server listening on port ${port}`)); //node.js의 method. 서버의 커넥션을 하고 listen한다.
특정한 URL를 통해 클라이언트의 요청이 들어왔을 때 그에 맞는 적절한 반응을 취해주는 것이다. express에서는 http request가 들어왔을 경우 method type에 따라 라우팅을 해줄 수 있다.
http request가 사용자로부터 날라왔을 때 사용자가 요청하면서 보내는 정보(request)와 서버가 보낼 정보(response)에 접근 가능한 함수이다.
app.use('path', function(req, res)=>{
do(something);
next();
});
use method를 사용할 경우 http request이 해당 url로 보내질 경우 method type에 관계없이 반드시 실행된다. next()는 다음에 실행할 method가 있으면 다음으로 넘어가게 해준다.
app.get('path', function(req, res)=>{
do something here...
});
http request가 get method의 형태로 호출할 경우에만 실행된다. 이는 put, delete의 경우도 마찬가지라 다음과 같이 함수명만 바꾸면 된다.
app.post('path', function(req, res)=>{
do something here...
});
app.delete('path', function(req, res)=>{
do something here...
});
두 method 모두 get, post, put, delete 가릴 것 없이 http request가 들어오면 처리한다는 공통점이 있다. 그러나 use method는 첫번째 인자로 들어오는 것을 시작 경로로 삼아 매칭하고, all method는 첫번째 인자와 request 경로가 정확히 일치할 때만 매칭한다.
app.use('/a', function(req,res) =>{});
request의 경로가 예를 들어 /a/b/c/... 라면 매칭한다. a로 시작하는 모든 경로에 대하여 routing이 진행된다.
app.all('/a', function(req, res) =>{});
request의 경로가 /a 로 정확히 매칭될 경우에만 함수가 호출된다. app.use에서 매칭되었던 /a/b/c/...는 여기에서 매칭되지 않는다.