Express.js는 Node.js로 서버를 빠르고 간편하게 만들 수 있게 도와주는 웹 프레임워크
다양한 웹 프레임워크가 존재하지만 오늘날 가장 많은 Node.js 웹서버가 Express.js 프레임워크를 통해 개발되었다.
최근 각광받고 있는 Node.js의 웹 프레임워크로 Nest.js도 존재.
Express.js와 웹서버는 동일하지 않다. Express.js는 웹서버 자체가 아닌 Node.js를 위한 웹 프레임워크로 웹 서버를 구현하기 위해 사용 되는 것
사전작업 해주자
기본적인 웹 서버 코드 작성해주고 실행~
API Client란 개발단계에서 우리가 작성한 API의 요청을 확인하거나 테스팅 할 때 도움을 주는 툴이다.
API Client를 사용함으로 개발 속도를 높이거나 치명적인 에러를 예방.
Postman
, Insomnia
등 여러 API Client가 있지만 이번에는 Thunder Client
를 사용해보자.
Thunder Client
는 VS Code 안에서 사용할 수 있으면서, 기능이 부족하지 않기 때문에 비교적 쉽게 사용가능.설치는 사이드 바 네모 4개있는거 누르고 Thunder Client 검색해서 설치하면 된다.
일단 서버를 연결해주고
API의 HTTP Method인 GET으로 연결해 준 뒤 주소입력 후 Send 누르자
Hello World 찍히면 성공!
(이건 그냥 알아두라고 올림)
Routing은 클라이언트의 요청 조건(메서드, 주소 등)에 대응해 응답하는 방식을 말한다.
Router는 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js 기본 기능중 하나
일반적인 Router의 구조는 아래와 같다
router.METHOD(PATH, HANDLER);
router
: express의 라우터를 정의하기 위해 사용.METHOD
: HTTP Method를 나타낸다. (ex: get, post, put, delete …)PATH
: 실제 서버에서 API를 사용하기 위한 경로를 나타낸다.HANDLER
: 라우트가 일치할 때 실행되는 함수.이제부터 http://localhost:3000/ 뒤에 /api 로 시작되는 주소는 routes/goods.js 에 있는 Router 미들웨어를 통해 처리
여기서 잠깐!! 미들웨어(Middleware)란?
웹 서버에서 요청을 받을 때 가끔 모든 요청에 대해 공통적인 처리를 하고 싶은 경우에
미들웨어를 이용하여 웹 서버의 요청/응답에 대해 공통적으로 관리 가능
다음에 더 자세히 알아보자!
모듈(Module)은 Javascript 파일 단위로 분리된 코드
여기서 Javascript 파일은 특정한 기능을 가진 여러 개의 함수와 변수들의 집합
모듈(Module)은 하나의 모듈에서 다른 모듈을 호출하여 사용.
모듈(Module)은 그 자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로도 사용 가능.
보통 1개의 파일이 1개의 모듈이 된다.
음... 그렇군.. 그럼 모듈은 왜 필요한걸까?
그 이유는
1. 코드베이스를 분리가능하고 구조적으로 관리가능하다.
2. 코드를 재사용가능하게 만들어준다. 모듈화(modularize)라고도 한다.
3. 모듈의 인터페이스만 노출시킬 수 있다. 그 외의 다른 모든정보를 은닉가능
4. 종속성을 관리
모듈은 두가지가 있다.
CommonJS(CJS)
브라우저 이외의 환경에서 모듈을 사용할 수 있도록 고안된 명세.
Node.js에서는 CommonJS
를 기본으로 사용.
CommonJS
는 전역 스코프에 정의 되어있는 require
함수로 대표된다. `
ECMA Script Module(ESM)
모든 Javascript
환경에서 통합적인 인터페이스를 제공하기 위해 시작된 체계
CommonJS
와는 다르게 정적으로 모듈을 가져오며 비동기적 모듈 로딩과 순환 종속을 처리
math.js에서 작성한 함수를 run.js으로 보내줘서 사용
그 외 다양한 방법을 올려보겠다.
종합본?
- Request란 클라이언트가 서버에게 전달하려는 정보나 메시지를 담는 객체를 의미.
- Response란 서버에서 클라이언트로 응답 메시지를 전송시켜주는 객체를 의미.
이 외에 많은 객체가 있으나 일단은 이것만 잘 알아두자.
추가설명
req.query (Query String)
?
기호를 이용해 Query String을 사용할 수 있다.GET
과 같은 Http Method에서 사용.req.params (Path Variable)
++++ 추가
req.body (Body)
Query String
, Path Variable(params)
과 다르게, URL만을 가지고 어떤 데이터를 전달하였는지 확인할 수 없는 특징을 가지고 있다.POST
, PUT
과 같은 Http Method에서 사용.