프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
본격적으로 백엔드 공부에 들어가게 됐다! 백엔드는 Node.js로 진행할 예정이다. 백엔드는 예전 프로젝트를 할 때 Nest.js만 가볍게 공부해본 게 다라서 다른 걸 공부할 때보다 조금 더 시간이 걸렸다.
우선 백엔드는 사용자가 보지 못하는 영역, 그러니까 서버와 데이터베이스 영역을 관리한다. 프론트엔드에서 사용자들이 무언가 요청을 할 때(ex. 로그인 등) 그 요청을 처리해주는 게 백엔드의 역할이다.
위 사진을 보면 클라이언트가 요청을 하고, 요청에 대한 응답을 받는 것을 볼 수 있다. 요청을 한 후 이어지는 과정이 백엔드가 하는 역할이다.
웹 서버와 웹 어플리케이션 서버의 차이는?
본격적으로 Node.js를 이용하여 간단한 웹 서버를 만들어볼 시간이다. 오늘의 TIL에는 아주 기본적인 웹 서버를 여는 것만 작성할 예정이다.
require()
: Node.js에서는 require 메서드를 통해서 외부 모듈을 가져올 수 있다. 여기서 사용한 건 require('http')
로 웹 서버를 구동하기 위해 사용되는 기본적인 모듈이라고 할 수 있다.
response.writeHead(statusCode, headers)
: 받은 응답에 대한 헤더를 설정하기 위한 HTTP 모듈의 메서드이다.
첫 번째 인자에는 statusCode를 입력한다. 상태 코드에는 성공적인 요청을 뜻하는 200, 서버가 요청 받은 리소스를 뜻하는 404, 서버의 오류를 뜻하는 500 등이 있다.
메서드의 두 번째 인자에는 헤더의 정보를 입력한다. 여기서 나는 Content-Type : text/html
을 입력했는데 응답에 대한 정보가 HTMl이라는 걸 뜻한다.
response.write()
: body에 어떤 내용이 담길지 보여주는 메서드이다.
response.end()
: 응답을 종료한다.
createServer()
: server의 객체를 생성한다. 인자에 요청에 대한 콜백함수를 넣을 수 있다. 요청이 들어올 때마다 해당 콜백함수를 실행해준다. 나는 onRequest라는 함수를 생성했기 때문에 해당 함수를 인자로 넣었다.
listen()
: 서버와 연결할 포트번호를 인자로 입력한다.
위와 같이 코드를 작성하고 cmd 창에 node server.js
를 입력해보자. 아무것도 뜨지 않을 텐데 주소창에 localhost:8888
을 입력하면 정상적으로 웹 서버가 열린 것을 확인할 수 있다.
다른 파일을 하나 더 생성한 후 해당 파일에서 웹 서버를 열 수도 있다. 위처럼 index.js 파일을 생성한 후 위와 같이 코드를 작성해주면 된다.
require()
메서드를 이용해 우리가 만들어 둔 server.js 파일을 가지고 오자.
server.js 파일에서는 우리가 서버를 실행하기 위해 만들어둔 코드를 start 함수로 감싸주자. start 함수를 호출하면 똑같이 서버를 실행할 수 있게 된다.
물론 다른 파일에서 해당 함수를 바로 호출할 수 있는 건 아니다. exports
메서드를 사용해서 해당 함수를 다른 파일에서도 사용할 수 있게 해줘야 한다.
이렇게 작성 후 node index.js
로 서버를 실행하면 웹 서버가 아주 잘 열리는 걸 확인할 수 있다!
사실 오늘 작성한 건 정말 간단하게 서버를 여는 것만 작성했다. 이 외에도 라우터를 활용하고 requestHandler도 활용하여 이런저런 다양한 실습을 했는데... 그 과정에서 몇 가지 이슈가 생기는 바람에 그걸 해결하는 과정까지 쓰면 너무 길어질 것 같았다.
그리고 앞으로는 TIL을 조금 더 간단하게 써볼까 한다. 말 그대로 오늘 배운 내용을 간략하게 정리하려는 목적인데 너무 하나하나 적다보니 시간도 많이 소요되고 분량도 길어지는 것 같다. 그냥 하루를 마무리하는 느낌으로 부담없이 적는 게 좋지 않을까 싶다!
요즘 갑자기 일이 좀 생겨서 TIL이 조금씩 미뤄지고 있는데... 다시 초심을 되찾고 짧게나마 꾸준히 작성해보자!!