node js 로 서버 구성하기

may_soouu·2020년 12월 22일
0

docker

목록 보기
7/7
post-thumbnail
post-custom-banner

node js의 기본 설정에 대해서 정리하겠습니다.

nodejs 설치는 공식홈페이지 에서 진행하시면 됩니다.

1. package.json 생성

$ npm init
// 쭉 엔터 눌러서 파일 생성해주기

// package.json 의 Debug 부분 
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js",
    "dev": "nodemon server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express":"^4.17.1",
    "mysql":"^2.18.1",
    "nodemon":"1.18.3",
    "body-parser":"1.19.0"
  }
}

test : test코드를 실행할 때 사용
start : express 서버를 시작할 때 사용
dev : nodemon을 이용해서 express 서버 시작
express : 웹 프레임워크 모듈
mysql : mysql 사용하기 위한 모듈
body-parser : 클라이언트에서 오는 요청의 본문을 해석해주는 미들웨어

nodemon >> 수정된 소스코드를 바로바로 반영해주는 모듈

2. main js 파일 생성

1번에서 생성된 package.json 에서 'main' 에 해당하는 부분의 이름으로 파일을 생성해줍니다. 저는 package.json에서
"main": "server.js"
로 이름을 변경했기 때문에 server.js 파일을 생성했습니다.

// 모듈가져오기
const express = require("express");
const bodyParser = require('body-parser');

// express 서버 생성
const app = express();

app.use(bodyParser.json());
app.listen(5000, () => {
    console.log('애플리케이션이 정상적으로 시작됐습니다.')
})

3. DB랑 node 서버 연결하기

const mysql = require("mysql");
const pool = mysql.createPool({
    connectionlimit: 10,
    host: 'mysql',
    user: 'root',
    password: 'soohyun',
    datebase: 'myapp'
});

// 다른 곳에서 쓸 수 있게 exports 해주기
exports.pool = pool;
server.js 에서 exports 된 pool을 불러오기
server.js 파일에

const db = require('./db'); 

추가

require 괄호안에 이름은 데이터베이스 설정 파일 이름입니다.

4. API 만들기

  1. 데이터베이스에 있는 값을 가져오는 api ( get )
  2. 입력한 값을 데이터베이스에 저장하는 api ( post )

데이터베이스 테이블 생성

db.pool.query(`CREATE TABLE lists (
    id INTEGER AUTO_INCREMENT,
    value TEXT,
    PRIMARY KEY (id)
)`, (err, results, fileds) => {
    console.log('results', results)
})

1. get

app.get('/api/values', function( req, res) {
    db.pool.query('SELECT * FROM lists;',
    (err, results, fileds) => {
        if(err)
            return res.status(500).send(err)
        else
            return res.json(results)
    })
})

2. post

app.post('/api/value', function(req, res, next) {
    db.pool.query('INSERT INTO lists (value) VALUES("${req.body.value}")',
        (err, results, fileds) => {
            if(err)
                return res.status(500).send(err)
            else
                return res.json({success: true, calue: req.body.value})
        })
})
app.listen(5000, () => {
    console.log('애플리케이션이 정상적으로 시작됐습니다.')
})
profile
back-end 개발자
post-custom-banner

0개의 댓글