방학 시작한 이후로 칩거하면서 공부는 안 하고 탱자탱자 놀다가 얼마 전부터 블로그라도 쓰자는 마음으로 글을 쓰기로 했습니다!
그래서 쓰기로 한 글이, 요즘 Node를 배우며 접하게 된 Express.js를 공부하며
제가 헷갈렸던 부분이나 처음에는 뭐가 뭔지 모르겠던 부분을 정리했습니다.
사실 여러 문서를 찾아보거나 그러면 금방 알 수 있는 부분이지만,
그런 검색으로 시간을 낭비하는 것보다 빨리 이해하고 알 수 있도록 정리해보았습니다.
1. 미들웨어(Middleware)
미들웨어(Middleware)라는 단어는 노드 뿐 아니라 여러 개발 환경에서도 볼 수 있는 단어지만,
아무래도 처음 접했을 때는 '뭐지 얘는..?' 이런 생각을 많이 했습니다.
위키에 나와 있는 정의를 쓰자면
미들웨어는 응용 소프트웨어가 운영 체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어이다. "소프트웨어 글루"로 이야기된다. 응용 소프트웨어는 유연하고 확장, 축소가 편리하여야 하며 이러한 장점을 충족하기에 개발자의 다른 기종 간 플랫폼을 다시 구축할 필요가 없어야 한다. 이를테면 데이터베이스 시스템, 전자 통신 소프트웨어, 메시지 및 쿼리 처리 소프트웨어를 들 수 있다.
라고 길게 되어 있지만, 간단히 이야기하자면 말 그대로 중간에 일처리해주는 서비스 정도라고 생각하시면 됩니다.
Express에서는 morgan처럼 log를 찍어주는 모듈이 대표적인 미들웨어라고 할 수 있습니다.
미들웨어는 직접 만들 수도 있고 아니면 npm에서 서드파티 모듈(타인이 만든 모듈)을 이용해서 설치하여 사용할 수도 있습니다.
참고로 Express에서는
다음과 같이 app = express()이후 app.use()를 사용하여 미들웨어를 씁니다.
저는 app이라는 객체에 use라는 메소드를 통해서 처리할 내용을 등록(바인드)한다고 생각했는데, 이게 정확한 표현일지는 잘 모르겠습니다. 고로 밑줄.
2. req, res
사실 검색 한 번이면 알 수 있는게 req, res입니다.
req는 요청 오브젝트, res는 응답 오브젝트인데요 이름에서부터 알 수 있듯 request와 respond의 줄임말입니다.
솔직히 말하면 express 도큐먼트에 있는 그림이 정말 딱 와 닿습니다.
출처 : http://expressjs.com/ko/guide/writing-middleware.html
엄청 잘 설명되어 있습니다.
req와 res는 HTTP 응답과 요청을 보낸다는 점에서 상당히 중요할 뿐 더러,
실제 개발 과정에서는 어떤 인수가 왔는지 확인하기 위해서 console로 찍어보는 경우가 많습니다.
저 같은 경우 특히 DB를 활용해서 뭘 만들 때는 찍어 볼 수밖에 없었습니다.
express의 경우 req와 res는 http 모듈에 있는 객체를 래핑(Wrapping)한 거라고 합니다. 아마 쓰기 쉽게 하려고 한 거겠죠?
res와 req에 직접적으로 메소드를 쓸 수도 있는데요,
대표적인 메소드들은 이런 것들이 있습니다.
1) req 관련 메소드
2) res 관련 메소드
더 알아보고 싶으시면 http://luckyyowu.tistory.com/346 를 참조하시면 좋을꺼 같습니다!
3. 라우팅(Routing)
라우팅(Routing)은 정말 어떤 웹 프레임워크를 하시던 알고 있어야 하는 부분입니다.
라우팅의 정의는
요청한 url에 대해 적절한 핸들링(처리하거나 관리하는) 함수로 연결해 주는 기능
이라고 할 수 있습니다.
get()이나 post()로 구현할 수도 있고, express는 라우팅을 위한 Router라는 클래스도 있습니다.
제 개인적인 생각이지만 express에서 라우팅은 꽤 섬세한 부분이 있습니다.
제가 rails를 하다 넘어와서 그런지 몰라도 프로그래머 입장에서 다양한 선택지와 분기를 만들 수 있는 느낌입니다.
아무쪼록 이와 같은 라우팅을 통해서 유저가 어떤 url로 이동하고 싶은지, 이동할 수 있다면 이동시켜주고 아님 못하게 할 수도 있습니다.
또한 뷰(View)를 렌더링 하게 할 수도 있습니다.
사실 이렇게 3가지를 정리해보았지만, 역시 제일 좋은 건
Express 도큐먼트를 한 번 쫙 읽어보시는 겁니다!!(이게 진짜 최고)
[Node.js] HTTP 요청 관련 라이브러리들(request vs axios vs superagent) (1) | 2021.01.19 |
---|
댓글 영역