코딩/Node.js

[koa] 코아 프레임워크 학습 - 1 - 라우팅 기능적용

카슈밀 2024. 12. 8. 01:57
반응형

express 개발자들이 express의 단점을 고치고자 했으나 내부구조가 변경되어야 하므로

React처럼 view 즉, 미들웨어 부분만 따로 빼서 만든 프레임워크입니다.

express처럼 여러 기능이 내장되어 있는 게 아니라서 추가로 설치해야합니다.

 

express를 사용할 줄 아나 원활히 사용한다고 생각되지 않아, 해당 코드를 학습합니다.

 

index파일 하나에 넣고 코드를 적용할 수 없어, 해당 코드를 분할합니다.

 

yarn add koa koa-router

yarn add koa koa-router
/// index.js

const Koa = require('koa');
const Router = require('koa-router');

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

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

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

app.use(router.routes()).use(router.allowedMethods());

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

 

localhost:4000/api

호출 적용

 

 

// api/index.js

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

const api = new Router();

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

module.exports = api;

 

localhost:4000/api/posts

호출 적용

 

이때 Restful api를 적용하였다.

// api/posts/index.js

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

const printInfo = (ctx) => {
  ctx.body = {
    method: ctx.method,
    path: ctx.path,
    params: ctx.params,
  };
};

posts.get('/', printInfo);
posts.post('/', printInfo);
posts.get('/:id', printInfo);
posts.delete('/:id', printInfo);
posts.put('/:id', printInfo);
posts.patch('/:id', printInfo);
module.exports = posts;

 

이렇게 폴더 구조를 function마다 분할을 적용할 수 있다.

 

728x90