본문 바로가기
공부/express

[express] express 웹 서버 기초

by 웅대 2024. 5. 8.
728x90
반응형

pacakage.json 생성

npm init 명령어로 package.json을 만들어준다.

 

package.json에는 프로젝트가 사용 중인 패키지의 정보가 담겨있다.


package.json 문서를 통해 패키지를 쉽게 관리할 수 있다.

 

npm init

 

npm init 명령어를 입력하면 패키지 이름, 정보 등등... 정보를 입력하라고 나오는데 특별히 입력할 정보가 없다면 모두 그냥 넘겨도 된다.

 

패키지 설치

이제 express 웹 서버를 만들 때 유용하게 쓸 수 있는 패키지를 npm install 명령어를 통해 추가해보자.

 

  1. express : express 프레임워크
  2. cors : cross origin 관련 설정
  3. json : json 파싱
  4. body-parser : request body 파싱 (express 버전이 4.16이상이면 설치하지 않아도 됨)
  5. nodemon : 서버 변경사항이 생기면 서버를 껐다 킬 필요없이 바로 반영
  6. mysql : mysql 연결
npm install express cors json body-parser nodemon

 

package.json의 dependencies를 보면 사용 중인 패키지와 버전 정보를 확인할 수 있다.

{
  "name": "express-practice",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.20.2",
    "cors": "^2.8.5",
    "express": "^4.19.2",
    "json": "^11.0.0",
    "nodemon": "^3.1.0"
  }
}

 

패키지를 설치하면 node_modules 폴더가 생기는데 이 폴더는 용량이 굉장히 크기 때문에 .gitignore에 등록해서 깃허브에 올리지 않게 주의해야한다.

 

node_modules 폴더 대신 package.json을 올려서 다른 사람이 사용할 때 npm install을 통해 package.json에 담겨 있는 패키지를 설치하도록 한다.

 

package.json 설정

package.json 설정을 해보자.

 

먼저 scripts에 start를 추가한다.

 

  "scripts": {
    "start": "nodemon index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

npm start 명령어를 입력하면 nodemon index.js가 실행이 될 것이고 nodemon을 사용했기 때문에 서버 변경사항을 실시간으로 반영할 수 있다.

 

이제 type을 추가한다.

  "type" : "module"

 

type은 기본 값인 commonjs와 module 둘 중 하나를 선택할 수 있다.

 

module을 사용하면  ES Module을 사용할 수 있다.

 

ES Module은 import와 export를 사용해서 외부 자바스크립트 파일을 사용할 수 있게 도와주는 모듈 시스템이다.

 

html의 script 태그를 통해 자바스크립트 파일을 가져오면 script 가져오는 순서도 고려해야 하고 의존성 여부를 파악하기 어렵지만 ES Module을 사용하면 모듈화를 통해 이러한 문제를 해결할 수 있다.

 

package.json의 main은 기본적으로 index.js로 되어있다.

 

index.js 파일을 만들고 그 안에 express 웹 서버를 실행할 수 있도록 코드를 작성한다.

 

Mysql 연결

Mysql 데이터베이스를 연결해보자.

 

데이터베이스와 테이블은 미리 만들어두자.

 

나는 express_practice라는 데이터베이스를 만들고 그 안에 user 테이블을 생성했다.

 

index.js 작성

여기서 웹 서버를 실행시키기 위한 설정을 진행한다.

 

import express from "express";
import mysql from "mysql";

const app = express();

// json 받을 수 있게
app.use(express.json());

// 데이터베이스 설정
const db = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "0000",
  port: "3306",
  database: "express_practice",
});

// 데이터베이스 연결 
db.connect((err) => {
  if (err) {
    console.log(err);
  } else {
    console.log("데이터베이스 연결");
  }
});

// 3001 포트로 서버 실행
app.listen(3001, () => {
  console.log("서버 실행");
});

 

npm start로 서버를 실행하고 성공 메시지가 잘 출력되는지 확인하자.

 

우리가 설정해 둔 nodemon으로 index.js를 실행하고 있고 데이터베이스 연결도 잘 되었다.

 

api 작성

1. GET 쿼리스트링

// GET 쿼리스트링
app.get("/users", (req, res) => {
    res.send(`쿼리 스트링 ${req.query.name}`)
});

/users?name=growth

위와 같은 경로로 들어오면 name에 해당하는 값을 가져올 수 있다.

 

2. GET path parameter

// GET path parameter 
app.get("/users/:name", (req, res)=>{
    res.send(`path parameter : ${req.params.name}`)
})

/users/growth

path 경로에 해당하는 값을 가져올 수 있다.

 

3. POST request body

// POST request body 
app.post("/users", (req, res)=>{
    const {name, age} = req.body
    res.send(`request body : ${name}, ${age}`)
})

해당 경로로 JSON 형식의 request body가 들어오면 파싱해서 사용할 수 있다.

 

데이터베이스 SQL 쿼리

연결한 데이터베이스이 SQL 쿼리를 날려서 유저를 삽입하는 api를 만들어보자. 

 

// POST request body 
app.post("/users", (req, res)=>{
    const {name, age} = req.body
    const sql = "insert into user(name, age) values (?,?)"
    db.query(sql, [name, age], (err, results, fileds)=>{
        
    })
    res.send(`사용자가 생성되었습니다.`)
})
728x90
반응형

댓글