티스토리 뷰

요즘 이것저것 하는데 Node로 서버를 만드는것도 나쁘지는 않아보입니다.

간단하게 Get, Post를 하나씩만 만들어 볼겁니다.

설치합니다.

Node.js

일단 Node.js를 사용해야 하니깐 받아줘야 할거 같습니다.

Javascript를 사용해서 웹 브라우저에 종속적이었던 것을 Windows, macOS, Linux등의 환경에서 코드를 실행할 수 있도록 도와줍니다.

https://nodejs.org/ko/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

이 사이트에서 LTS 버전을 설치합니다. 다른 버전을 설치해도 되긴 합니다. 하지만 LTS를 사용하는것이 안정성도 높고 일반 버전들 보다 사후 지원이 길어서 이것을 사용하는 것이 좋습니다.

NPM

요즘은 Node를 설치하게 되면 NPM도 같이 설치가 되게 되므로 이곳에서는 다루지 않을게요.

NPX 설치

npx는 npm 도구로서 npm과 관련하여 약간 귀찮은 과정들이 필요했던 여러 가지 사항을 단순하게 만들어 줍니다.

npm 5.2.0 버전 이상에서는 자동으로 설치가 된다고 하지만 안되는 경우에는 이것을 사용합니다.

$ npm i -g npx

옵션의 설명은? i : install, -g : 모든 프로젝트에서 사용하겠다는 옵션 (global) 이라고 합니다.

Yarn 설치

설치하지 않고 Node.js 설치시 기본적으로 설치되는 NPM을 사용해도 되지만 설치할게요.

https://yarnpkg.com/lang/en/

 

Yarn

Fast, reliable, and secure dependency management.

classic.yarnpkg.com

프로젝트 생성

$ mkdir your-project-name
$ cd your-project-name

package.json (프로젝트 init) 하기

$ yarn init

이렇게 하고 나면 무언가를 입력하라는것이 주우욱 나오게 되는데 그냥 아무 설정을 하지 않고 넘어가도록 합니다.

Node Package 설치

$ yarn add express
$ yarn add nodemon

기본적으로 이정도는 설치하고 시작합니다.

express : 웹 앱, API 개발 framework

nodemon : 파일을 수정하고 저장되는 순간 node를 재실행하여 주어서 개발하는데 편하게 도와줍니다.

실행 파일을 만들어 봅시다.

/app/server.js

let express = require('express');
let lottoController = require('./controller/lotto.controller');

let router = express();
router.listen(80, () => {
    console.log('Server is running.')
});

router.get('/', (req, res) => {
    res.send('Hello, Node.js');
});

router.route("/lotto/")
    .get(lottoController.getLotto);

router.route("/lotto/:number")
    .get(lottoController.getLotto);

lotto 번호 발생기를 예로 들어볼까 합니다.

route되는 /lotto와 /lotto/:number 형태로 들어오는 url을 route 하게 됩니다.

lotto.controller는 잠시뒤에 만들거에요.

/app/controller/lotto.controller.js

exports.getLotto = async function (req, res) {
    var count = req.params.number
    if (count === undefined) {
        count = 5;
    }

    if (count < 1) {
        res.json(
            {
                code: '1000',
                message: "It must be greater than 1."
            }
        );    
        return;
    }

    const numbers = [];
    for (var index=0; index<count; index++) {
        numbers.push(randomNumber());
    }
    res.json(
        {
            code: '0000',
            message: "success",
            numbers: numbers
        }
    );
}

function randomNumber() {
    const map = new Map();

    while (map.size < 6) {
        const random = Math.random();
        const number = Math.floor(random * 45 + 1);
        map.set(number, number);
    }

    var numbers = [];

    map.forEach(function(value) {
        numbers.push(value);
    });

    numbers.sort(function(before, after) {
        return before - after
    });

    return numbers.join(",")
}

네 대출 짠거라 아름답지 않다고 해도 그냥 이렇게 하면 됩니다.

위에 보면 getLotto를 호출하여서 res를 통해서 값을 전달할수 있도록 합니다.

단순히 이정도 코드로 벌써 서버를 구동하였습니다.

테스트

$ node ./app/server.js

이렇게 구동하고 브라우저나 포스트맨이나 curl같은것을 이용하여서 다음 url을 호출하여 봅시다.

http://localhost/lotto
http://localhost/lotto/100

Docker로 올리는 방법도 다음에 알아보도록 할게요.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함