티스토리 뷰

일단은 지금 상태에서 소스코드를 작성할 때 매우 불편한 점이 있다.

소스코드를 수정한 후에 수정한 내용을 확인하기 위해서는 집적 서버를 껐다 켜야 한다는 점이다.

이것을 조금 더 편리하게 해주는 도구가 있다. 바로 nodemon 이다.

npm install --save-dev nodemon 을 통해 nodemon을 설치하자.

이후 서버를 시작하는 명령을 추가할 것이다.

package.json에서 "scripts" 아래에 "server" : "nodemon main.js" 를 추가하자.

이제부터는 npm run server 라는 명령어를 통해서 서버 구동이 가능하다.

그리고 이제는 소스코드를 수정했을 때 일일히 서버를 껐다 킬 필요가 없이 nodemon이 수정을 감지하여 자동으로 서버를 재가동 해줄 것이다.

편리한 설정을 하나 마쳤다. 다음으로 블로그 포스팅 서비스에서 구현해야 할 기능들을 생각해 보자.

GET /posts // 전체 포스팅 된 글
GET /posts/:id // id에 해당하는 post
POST /posts // 포스트 작성

위 기능을 구현하기 위한 가장 간단한 방법은 url을 통해 접근을 분기하는 것이다.

/posts 로 접근하는 경우, /posts/:id 로 접근하는 경우를 구분해야 하며 또 GET으로 접근했는지, POST로 접근했는지에 따라 다른 결과를 제시해야 할 것이다.

const server = http.createServer((req, res) => {
  if (req.url === '/posts' && req.method === 'GET') {
    res.statusCode = 200
    res.end('[GET]posts')
  } else if (req.url === '/posts/:id' && req.method === 'GET') {
    res.statusCode = 200
    res.end('[GET]posts/:id')
  } else if (req.url === '/posts' && req.method === 'POST') {
    res.statusCode = 200
    res.end('[POST]posts')
  } else {
    res.statusCode = 404
    res.end('Not Found')
  }
})

따라서 이렇게 일일히 분기를 나눠주었다.

그러나 문제가 있다.

/posts/:id 의 목적은 /posts/13 과 같이 특정한 id에 대한 post를 GET하는 요청인데 위와 같은 코드는 정확히 /posts/:id 라는 url로 접속해야만 저 분기를 만족하게 된다.

따라서 이 문제를 해결하기 위해 정규표현식을 사용했다.

req.url === '/posts/:id' && req.method === 'GET'

이 코드를 req.url && /^\/posts\/[a-zA-Z0-9-_]+$/.test(req.url) 로 수정했다.

간단하게 설명하자면 /posts 이후에 오는 문자가 a-z, A-Z, 0-9, -, _ 에 속하는지 테스트하여 그 조건을 만족했을 때 분기에 진입하게 되는 것이다.

이렇게 하여 /posts/32 와 같은 특정한 id에 대한 접근처리를 마무리 했다.

그러나 우리는 분기에 진입한 것으로 끝이 아닌 해당 id를 가지고 추가적인 작업을 수행해야 한다.

따라서 다음엔 정규식을 통해 url에서 id를 추출하여 사용해 보겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함