Express (TIL 53일차)

EenSung Kim·2021년 5월 28일
0

"MERN"


Javascript 생태계에서 인기있는 프레임워크인 MongoDB, Express, React, Node 를 묶어 MERN stack 라고 한다고 합니다. 그 중에서 오늘은 Express 에 입문해보았습니다.


Express

Node.js 를 위한 빠르고 개방적인 간결한 웹 프레임워크

Express 홈 화면의 소개글입니다. 'Node.js 를 위한' 이라는 말에서 Express 역시 백엔드를 위한 도구라는 걸 알 수 있겠죠. 빠르고 개방적이라는 말은 아직 어떤 뜻인지 경험해보지 못했지만, 간결하다는 것 만큼은 확실히 느낄 수 있었습니다.

Node.js 만을 활용해서 서버를 제작하려니, 간단한 문자열을 넘겨받아 이를 가공해 전달하는 데만도 많은 에너지가 들어가더라구요. 처리해야 될 과정도 많이 있구요. 하나의 과정을 위해서 들어가야 되는 절차가 매우 많다는 느낌이었는데요. Express 를 활용하게 되니 필요한 과정이 대폭 줄었다는 느낌을 받았습니다.


Express 활용

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

공식 홈페이지의 Hello World 예제입니다. 간단하죠? 공식문서를 바탕으로 위에서부터 훑어보려고 합니다.

가장 윗 줄의 const express = require('express'), 그리고 const app = express() 를 통해 express application 을 만들 수 있습니다. express() 는 express module 이 제공하는 가장 상위 레벨의 함수라고 합니다.

port 는 사용하게 될 port 를 할당해 저장하는 변수입니다. 제일 아래에서 다시 활용하고 있지만, port 를 쓰지 않고 바로 숫자를 할당해도 상관 없습니다. 다만 port 로 상단에서 할당해두는 편이 혹시나 변경해야 될 일이 있을 때 보다 쉽게 변경이 가능하죠.

app.get, app.listen 은 express 가 제공하는 메소드입니다. 홈페이지의 API 참조 를 통해 확인 가능한데요. HTTP 메소드 중 CRUD 에 해당하는 POST, GET, PATCH, PUT, DELETE 를 express 에서 동일하게 찾아볼 수 있고 그 외에도 자체적으로 제공하는 많은 메소드가 포함되어 있습니다.

app.listen 같은 경우는 host 와 port 를 연결해 오픈하는 것이라고 생각할 수 있겠습니다. 공부를 하면서 직접 서버를 열어야 하다 보니 주로 http://localhost: 로 시작하게 되고, port 넘버 정도만 수정하는 식으로 접근했는데요. 제가 본 자료들에서는 전부 다 메인 앱의 가장 하단에 배치되어 있었습니다. 아마도 그래야 접근하기 편해서이지 않을까 싶네요.

app.get 은 HTTP 메소드 GET 으로 들어오는 요청에 대응하는 것이라고 할 수 있겠죠. api 설명에 보면 첫 번째 인자로 path 를, 두번째 인자로 콜백 함수를, 그리고 그 외의 추가적인 콜백 함수를 가질 수 있습니다.

위의 코드에서는 root path 인 '/' 가 path 로 전달되고 있구요. ( req, res ) 를 인자로 갖는 익명함수가 전달되고 있는데요. req 를 통해 클라이언트가 HTTP 메소드를 이용해 서버에 전달하려고 하는 정보들에 접근할 수 있고, 반대로 res 를 이용해 다시 클라이언트에 필요한 정보를 전달할 수 있습니다.


코드스테이츠는 사실 어떻게 보면 불친절하다 싶을 정도로 수강생들을 강하게 키운다는 느낌을 받을 때가 있는데요. Express 에 들어와서는 드디어 절정을 찍는 듯한 느낌입니다. 벌써 이런 느낌이라니 나중에는 진짜 어떨지 상상이 잘 안 될 정도인데요.

현업에 뛰어들기 위해서 공부하는 만큼, 문제가 무엇인지 파악하고 주도적으로 해결하는 능력이 당연히 필요하겠죠. 회사를 잠깐 다녀본 바로는 언제나 지시사항은 명확하지 않습니다. 따라서 낯선 상황에서도 어떻게든 문제를 해결할 수 있는 의지와 능력이 중요한데요. 미리 이런 상황들을 겪어볼 수 있다는 것도 참 중요한 것 같아요. 물론 마음먹기에 따른 것이지만 말이죠. ^^;;

profile
iOS 개발자로 전직하기 위해 공부 중입니다.

0개의 댓글