백엔드 다루기 Koa 프레임워크 (간단정리)

Node.js의 Koa 웹프레임워크

Express의 기존 개발팀이 개발한 프레임워크로 기존의 개선점들을 추가하며 새로운 프레임워크를 개발

  • Express는 다양한 기능이 자체적으로 내장되어 있는 것에 비해
    Koa는 미들웨어 기능만 갖추고 필요 라이브러리들은 따로 다운받는다 -> express보다 가볍다. + async/await 같은 ES6 문법 제공
  • 우리는 서버를 만들고 해당 서버의 body에 원하는 내용을 처리하면 이를 이를 API로 처리한다면 해당 body를 받아 처리하겠지 (GET 메소드 같은 경우는 웹 브라우저에서 주소를 입력해서 테스팅하는 것이 이에 해당)

Koa로 서버 띄우기

const Koa = require('koa');
const app = new Koa();
app.use(ctx=>{
  	ctx.body = 'hello';
})

app.listen(4000, ()=>{
  console.log('open 4000 port');
})

node src/index.js 명령어 실행하면 정상적으로 동작

미들웨어

app.use 함수를 통해 미들웨어 함수를 등록

미들웨어 파라미터

  1. ctx : 웹 요청과 응답에 관한 정보
  2. next : 현재 처리중인 미들웨어의 다음 미들웨어를 호출하는 함수
    (다음 app.use 실행역할)

nodemon

서버 코드를 변경할때마다 서버를 재시작하는 번거로움을 해결하기 위한 라이브러리 (서버 코드의 변경을 감지해서 restart 하는듯)

koa-router

다른 주소로 요청이 들어올 경우 다른 작업을 처리할 수 있도록 라우터를 사용

  • 라우터간의 계속된 연결을 처리한다.

파일들

  • src/index.js
  • src/api/index.js
  • src/api/posts/index.js
  • src/api/posts/posts.ctrl.js

src/index.js

const Router = require('koa-router');
const api = require('./api');
const router = new Router();
...

router.use('/api',api.routes());

src/api/index.js

const Router = require('koa-router');
const posts = require('./posts');
const api = new Router();
...

api.use('/api',posts.routes());

src/api/posts/index.js

const Router = require('koa-router');
const postsCtrl = require('./posts.ctrl');
const posts = new Router();
...

posts.get('/',postsCtrl.list);
posts.post('/',postsCtrl.write);
posts.get('/:api',postsCtrl.read);

src/api/posts/posts.ctrl.js

exports.write = ctx=>{
  ...
}
  
exports.list = ctx=>{
  ctx.body = posts;
};

exports.read = ctx=>{
  ....
}

좋은 웹페이지 즐겨찾기