본문 바로가기

웹 개발/Node.js

Node.js로 백엔드 프로젝트 시작하기 (+ Koa)

Node.js로 백엔드 프로젝트 시작하기 

// 프로젝트 폴더 만들기 
$ mkdir Project
$ cd Project

// 백엔드 폴더와 프론트엔드 폴더 구분하기 
$ mkdir Project-backend
$ mkdir Project-frontend

// 백엔드 폴더에 package.json 파일 만들기
$ cd Project-backend
$ npm init -y
// Koa 웹 프레임워크 설치하기 
$ npm install koa --save

1. Koa로 서버 띄우기

const Koa = require('koa');

const server = new Koa();

server.use ((ctx [, next]) => { 
	...
    [next();]
});

// PORT=4000
server.listen(PORT, () => {
	console.log(`Listening to port ${PORT}`);
});
  • ctx : 서버에 사용자가 보내는 request나 서버에서 돌아오는 response 정보를 가지고 있는 객체입니다. 
  • next (optional): 이 파라미터는 옵션으로 현재 미들웨어에서 다음 미들웨어를 호출하는 함수입니다. 

koa는 공식적으로 async/await를 지원합니다. 사용법은 다음과 같습니다. 

koaInstance.use( async ctx => {
	await ... 
});

2. koa-router 사용하기 

koa-router 설치

$ npm install koa-router --save

koa-router 사용

koa-router에서 Router를 불러오고, 라우터 인스턴스를 하나 선언해줍니다. 

그리고 해당 라우터에서 사용할 http 메소드 타입을 작성하고, 첫번째 파라미터로 해당 라우터의 pathname을 전달합니다. 

router.[post/get/delete/put/patch 중 1 택]  
const Koa = require('koa');
const Router = require('koa-router');

const server = new Koa();
const router = new Router();

router.[HTTP Request type]('/[pathname]', ctx => {
	...
});


// 서버에 라우터 적용 
server.use(router.router()).use(router.allowedMethods());

// PORT=4000
server.listen(PORT, () => { 
	console.log('Listening to port `${PORT}`... );
});

프론트엔드가 없는 상태에서는 .get으로 전달한 결과물만을 브라우저에서 확인할 수 있습니다. 

예를 들어 다음과 같은 코드를 통해서 http://localhost:4000/hello 주소로 가면 hello world 가 화면에 뜨는걸 확인할 수 있습니다. 

router.get('/hello', ctx => {
	ctx.body = 'hello world';
});

추가로, router의 pathname을 설정할 때 /pathname/:param 으로 파라미터를 설정할 수 있고, /pathname/?query=data 형식으로 쿼리를 설정할 수도 있습니다. 

또한 파라미터 뒤에 :param? 처럼 ? 를 붙여주면 없는 파라미터가 없는 경우도 있을 수 있다고 설정하는 것입니다. 

  • 파라미터
    • 설정하기 : /pathname/:param[?]
    • 조회하기 : ctx.params
  • 쿼리
    • 설정하기 : /pathname/?qureyKey=queryValue
    • 조회하기 : ctx.query / ctx.querystring (문자열 형태의 쿼리 문자열 조회시)

References

  • 리액트를 다루는 기술(김민준)