express.js는 Node.js를 위한 웹 프레임워크이다.
오늘은 express로 서버를 돌릴 때 필요한
request와 response 개념에 대해 정리해보았다.
우선 express 사용 방법이다.
babel을 사용하면 아래와 같이 최신 자바스크립트 문법을 사용할 수 있다.
import express from "express";
const app = express()
이렇게 하면 "express" 패키지를 express라는 이름으로 import 하겠다는 뜻이 된다.
npm이 알아서 찾아주기 때문에 express의 상세주소는 적지 않아도 된다.
그리고 app 변수에 express 패키지를 실행시킨다.
클라이언트(사용자)가 브라우저에 요청(request)을 보내면
브라우저는 그 요청을 서버에 전달한다.
서버는 그 요청에 응답(response)을 해야 하기 때문에
항상 listen을 하고 있어야 한다.
javascript의 addEventListener와 비슷하다고 보면 된다.
app.listen(4000, () =>
console.log("app is listening port 4000")
);
app.listen 메서드의 첫번째 매개변수에는 Port 번호가 들어가고
두 번째 매개변수에는 실행할 함수가 들어간다.
여기서 포트(Port)에 대한 이해가 필요하다.
Port는 항구라는 뜻으로 네트워크 상의 문을 뜻한다.
Port는 숫자로 구성되어 있는데,
예를 들어 0 ~ 1023의 숫자는
국제 도메인 관리기구의 통제를 받고 있기 때문에
일반 사용자가 사용할 수 없다.
숫자가 높을수록 사용자가 적어서
공부가 목적이면 높은 숫자를 사용하는 것이 좋다.
app.listen 메서드가 실행되면 서버는 browser의 요청을
항상 Listening 하고 있게 된다.
Port 번호를 4000으로 설정했으므로
사용자는 http://localhost:4000 의 주소로 서버에 접근할 수 있다.
여기서 짚고 넘어가야 할 게 있다.
사용자가 브라우저를 통해 request를 보내고 서버가 응답을 하게 되면
사용자는 제자리에서 서버의 정보를 다운받는다.
사용자가 서버로 들어가는 게 아니다.
이제 사용자가 http://localhost:4000 서버에 요청을 보내면
응답을 할 코드를 작성해야 한다.
서버 주소에 '/'를 붙이면 그 서버의 home을 뜻한다.
즉, 가장 먼저 보여줄 메인 페이지가 되는 것이다.
코드는 다음과 같다.
const Home = (req, res) => {
console.log(`${req.method}${req.url}`); // get/
return res.send("<h1>hahaha<h1>");
};
app.get("/", Home);
app.get 메서드로 요청받은 페이지를 보여줄 수 있다.
첫 번째 매개변수는 요청받은 주소를 의미한다.
만약 '/' 대신 'login' 이라고 적으면
사용자가 http://localhost:4000/login 의 주소로 요청을 보낼 때
응답할 수 있게 된다.
두 번째 매개변수로는 콜백 함수가 들어간다.
이 함수에는 express 라이브러리가 제공하는 매개변수를 사용할 수 있다.
바로 request와 response 그리고 next이다.
(next에 대한 정리는 다음에 하도록 하겠다.)
request에는 요청받은 정보가 들어있고
response에는 응답할 정보가 들어있다.
return을 하지 않으면 브라우저는 응답을 할 때까지 계속 로딩을 하게 되므로
반드시 return을 해야 한다.
(아니면 next() 함수로 다음 함수로 넘길 수도 있다.)
'Programming > Node.js' 카테고리의 다른 글
| [Node.js] express - Router로 파일 정리하기(3. 코드 작성) (0) | 2021.10.17 |
|---|---|
| [Node.js] express - Router로 파일 정리하기(2. 파일 구조 설계) (0) | 2021.10.17 |
| [Node.js] express - Router로 파일 정리하기(1. url 이름 짓기) (0) | 2021.10.15 |
| [Node.js] express - Middleware (0) | 2021.10.15 |
| [Node.js] package.json (0) | 2021.10.14 |