익스프레스는 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'), '번 포트에서 대기 중..');
});
'NodeJS' 카테고리의 다른 글
[NodeJS] 실무에서 자주 사용하는 패키지 (0) | 2023.07.01 |
---|---|
[NodeJS] 익스프레스 자주 사용하는 미들웨어 (0) | 2023.07.01 |
[NodeJS] http - 요청과 응답 (0) | 2023.06.30 |
[NodeJS] 자주 발생하는 에러들 (0) | 2023.06.29 |
[NodeJS] 예외 처리하기 (0) | 2023.06.29 |