본문 바로가기
NodeJS

[NodeJS] 익스프레스 웹 서버 만들기

by Yeoseungwon 2023. 7. 1.
728x90

익스프레스는 http 모듈의 요청과 응답 객체에 추가 기능들을 부여했다. 

더 이상 if문으로 요청 메서드와 주소를 구별하지 않아도 된다. 

 

익스프레스 프로젝트 시작하기 

1. 폴더 생성 learn-express

 * 항상 package.json 을 제일 먼저 생성해야 한다. 콘솔에서  npm init 명령어 호출 

package name : (폴더명) [프로젝트 이름 입력]

version : (1.1.0) [프로젝트 버전 입력]

description : [프로젝트 설명 입력]

entry poion : index.js     (app.js) 지금 프로젝트에서는 app.js 로 바꿈 

test command : [엔터 키 클릭]

git respository : [엔터 키 클릭]

keywords : [엔터 키 클릭]

author : [이름 입력]

license : (ISC) [엔터 키 클릭]

 

-----

package.json 이 생성 되면 콘솔에 express 설치  npm i express

----

scripts 부분에 start 속성은 잊지 말고 넣어주기. 

 

----------

서버의 역할을 할 app.js 파일 생성

const express = require('express');
const path = require('path');

//익스프레스 내부에 http 모듈이 내장되어 있으므로 서버의 역할을 할 수 있다. 
const app = express();
//app.set('port', 포트)로 서버가 실행될 포트를 설정한다.
//process.env 객체에 PORT 속성이 있다면 그 값을 사용하고, 없다면 기본값으로 3001번 포트를 이용한다는 뜻
app.set('port', process.env.PORT || 3001); //이렇게 app.set(키,값)을 사용해서 데이터를 저장할 수 있다. 
//나중에 데이터를 app.get(키)로 가져올 수 있다. 


//app.get(주소, 라우터)는 주소에 대한 GET요청이 올 때 어떤 동작을 할지 적는 부분
app.get('/', (req, res)=>{ //매개변수 req는 요청에 관한 정보가 들어있는 객체, res는 응답에 관한 정보가 들어 있는 객체
    res.send('Hello, Express');  //GET / 요청 시 응답으로 HEllo, Express를 전송한다.
    //익스프레스에서는 res.write나 end 대신 res.send를 res.send사용하면 된다.
    //GET요청 외에도 POST,PUT,PATCH,DELETE,OPTIONS에 대한 라우터를 위한 app.post, app.put, 등의 메서드가 존재한다. 
})

app.listen(app.get('port'), () => {
    console.log(app.get('port'), '번 포트에서 대기 중..');
});

 

Express 모듈을 실행해 app 변수에 할당 (익스프레스 내부에 http 모듈이 내장되어 있으므로 서버의 역할을 할 수 있다.)

 

콘솔에

npm start 하고 

브라우저에서 http://localhost:3001 으로 접속해서 확인하기 

단순한 문자열 대신 html로 응답하고 싶다면 res.sendFIle 메서드를 사용하면 된다. 

단, 페이지 경로를 path 모듈을 사용해서 지정해야 한다. 

<html>
    <head>
        <meta charset="UTF-8"/>
        <title>익스프레스 서버</title>
    </head>
    <body>
        <h1>익스프레스</h1>
        <p>배워봅시다.</p>
    </body>
</html>
const express = require('express');
const path = require('path');

const app = express();
app.set('port', process.env.PORT || 3001); 


app.get('/', (req, res)=>{ 
    res.sendFile(path.join(__dirname, '/index.html'))
})

app.listen(app.get('port'), () => {
    console.log(app.get('port'), '번 포트에서 대기 중..');
});

 

 

728x90