본문 바로가기
시행착오 스토리/카카오봇

#2 카카오 자동응답 API로 카카오봇 만들기 - NodeJS 서버 구성

by 양벨라 2017. 8. 25.





NodeJS로 서버 구성하기


첫 번째로 nodejs를 이용해 간단히 요청에 응답하는 아주 단순한 서버를 구성해볼 예정이다. 그전에 nodejs에 대해 좀 상세히 알고 사용해보려고 한다. nodejs는 구글 크롬의 V8 자바스크립트 엔진에 기반해 만들어진 서버 사이드 플랫폼이다. 다들 크롬이 다른 웹브라우저보다 월등히 빠르다는 사실은 잘 알 것이다. 기존의 자바스크립트 엔진은 코드를 인터프리트하여 처리했지만 V8은 JIT(Just In Time)방식을 사용하여 실행하는 시점에 바로 기계어로 컴파일 해준다. 이 엔진을 서버로 사용하는 것이 nodejs이다. 간결한 언어인 자바스크립트로 성능이 좋은 서버를 구성할 수 있다는 점이 nodejs의 큰 무기이다. 또한 서버를 구성하는데 별로 힘이 들지 않아 초보자도 쉽게 접근가능 한 것 같다. 나도 인턴 기간동안 진행했던 프로젝트에서 javascript를 처음 다뤄봄에도 불구하고 서버를 간단히 만들 수 있었다.


NodeJS 설치

* 패키지 설치


https://nodejs.org/en/download 에서 최신버전을 다운 받는다.


* nodesource를 통한 Ubuntu 설치
$ sudo apt-get install curl
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs


보통 회사에서는 윈도우를 많이 이용해서 혼자 실습하는 경우에는 최대한 리눅스를 사용하려고 한다. 나는 virtualbox위의 ubuntu에서 curl을 이용하여 설치했고 별 문제는 발생하지 않았다.


여기까지 따라했다면 $ node -v 로 버전 확인을 해보고 제대로 설치되었는지 본다. 제대로 설치되었다면 버전이 뜰 것이다.

> 확인이 되었다면 이제 서버를 구성해볼 것이다.

HTTP 서버 구성

1. 필요한 모듈을 불러오기 위해 require를 사용한다.
var http = require("http");
require("모듈명")을 선언함으로써 모듈을 사용할 수 있다. 참고로 nodejs에서는 require("경로/xx.js"); 를 사용하면 경로에 위치한 .js파일을 가져와서 사용할 수 있다.


2. 서버 생성 메소드를 실행한다.
var http = require("http");
http.createServer(function(req, res) {
  if(req.url.substring(1)=="keyboard"){
    var resObj = {
      "type": "text"
    };
    res.setHeader('content-Type':'application/json');
    res.end(JSON.stringify(resObj));
  } else {
    res.setHeader('content-Type':'application/json');
    res.end("");
  })
}).listen(8000);
클라이언트의 요청에 대한 핸들러와 응답 데이터를 적는다. 여기서 keyboard라는 필드명을 받을 경우 답변을 보낼 수 있도록 되어있는데 이는 카카오 API 명세를 따르기 위함이다. 또한 지금 이 글의 목표는 API Test를 OK로 통과하는데에 있으므로 스펙에 따른 GET타입의 keyboard API만을 고려해서 작성했다. 응답 데이터의 경우 JSON타입의 "type": "xxx" 형태로 응답해야 성공이다.


3. 서버 실행
$ nodejs server.js
서버를 실행하고 관리자센터에서 API Test를 해본다. keyboard OK가 뜨면 된다.



실패 시 확인해볼 부분
1. 방화벽을 확인
   가상 환경에 서버를 실행했을 경우 가상 컴퓨터의 포트를 한 번 더 열어 줘야 하는 부분이 있다.
2. 응답 데이터 타입과 형태를 살펴본다.