6-1. 익스프레스 웹 서버 프레임워크

몰입을 즐기는 개발자·2023년 3월 28일
0

NodeJs 교과서

목록 보기
2/2
post-thumbnail

익스프레스(express):
npm에서 서버를 제작하는 과정에서의 불편을 해소하고 편의기능을 추가한 웹서버 프레임 워크

  • http모듈의 요청과 응답 객체에 추가기능들을 부여
  • 기존 메서드 + 편리한 메서드 추가해 보완
  • 코드를 분리하기 쉽게 만들어 관리도 용이
  • 패키지의 다운로드 수가 타 웹 서버 프레임워크에 비해 압도적으로 많음
    - 버그 적음
    • 유지보수 용이

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

  • package.json을 가장 먼저 생성한다.
  • version, description, author, license는 자유롭게 수정가능.
// package.json을 가장 먼저 생성
{
    "name": "Capstone2023",
    "version": "0.0.1",
    "description": "make a server",
    "main": "app.js",
    "scripts": {
        "start": "nodemon app" //필수!!!, app.js를 nodemon모듈로 서버를 자동 재시작
    },
    "author": "JiminOh",
    "license": "MIT",
  • 콘솔에 npm 명령어로 express 설치
$ npm i express
$ npm i -D nodemon
  • app.js 생성
const express = require('express');

const app = express();
app.set('port', process.env.PORT||3000);	//서버가 실행될 포트 지정

app.get('/', (req, res) =>{
	res.send('Hello, Express');
});

app.listen(app.get('port')),() => {
	console.log(app.get('port'),'빈 포트에서 대기중');
});
  • express 모듈을 실행하여 app 변수에 할당.
  • express 내부에 http 모듈이 내장되어 있음 >> 서버의 역할!
  • app.set(port, 포트)에서 process.env 객체에 PORT속성이 있다면 그 값을 사용, 없다면 기본 3000포트를 사용
  • app.set(주소, 라우터)는 주소에 대한 GET요청 (특정 리소스로 부터 데이터 요청, POST는 처리된 데이터를 특정 리소스로 송출)이 올 때 어떤 동작을 하는지에 대한 부분
    - res: 응답에 관한 정보를 담은 객체
    • req: 요청에 관한 정보를 담은 객체
  • GET외에도 POST, PUT, PATCH에 대한 라우터를 위한 app.post, app.put, app.patch메서드가 존재
  • listen을 하는 부분은 http 웹 서버와 동일.
    - 포트는 app.get('port')로 가져옴
  • HTML로 응답하고 싶다면 res.sendFile메서드를 사용.
<html>
<head>
  <meta charset="UTF-8" />
  <title>익스프레스 서버</title>
</head>
<body>
  <h1>심화 캡스톤 졸업작품</h1>
  <p>unity3D와 nodejs(벡엔드)의 연계<p>
</body>
</html>
const exrpess = require('express');
const path = require('path');

const app = express();
app.set('port', process.env.PORT || 3000);
app.get('/', (req,res) => {
	res.sendFile(path.join(_dirname, '/index.html'));
});

app.listen(app.get('port'),() =>{
	console.log(app.get('port'), '빈 포트에서 대기 중')
})
  • localhost:3000으로 접속한다.
profile
성장에 목마른 소프트웨어 엔지니어

0개의 댓글