[express] express 웹 서버 기초

2024. 5. 8. 22:55·공부/express
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

'공부 > express' 카테고리의 다른 글

[Express] passport 모듈을 통해 jwt 인증, 인가 구현  (1) 2024.05.21
[Express] passport 모듈을 통해 쿠키 세션 방식으로 로그인 구현  (0) 2024.05.18
[Express] API 작성법 (라우터, 컨트롤러 분리)  (0) 2024.05.16
[Express] mongoose 사용법 (mongoDB ORM)  (0) 2024.05.14
[Express] sequelize 사용법 (ORM)  (0) 2024.05.12
'공부/express' 카테고리의 다른 글
  • [Express] passport 모듈을 통해 쿠키 세션 방식으로 로그인 구현
  • [Express] API 작성법 (라우터, 컨트롤러 분리)
  • [Express] mongoose 사용법 (mongoDB ORM)
  • [Express] sequelize 사용법 (ORM)
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    openvidu 배포
    스프링 OAuth2
    푸쉬 알람
    codetree
    embedding
    ChatPromptTemplate
    binary search
    bfs
    ci/cd
    다익스트라
    parametric search
    스택
    nn.RNN
    Vector Store
    Merge
    RNN
    influxDB CLI
    code tree
    AWS Lambda
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[express] express 웹 서버 기초
상단으로

티스토리툴바