Koa

omnigi·2022년 3월 11일
0

백엔드

목록 보기
1/8
post-thumbnail

프로젝트 생성

blog-backend 라는 폴더를 생성할겁니다 (이름은 원하시는대로 바꾸셔도 무방해요!)

mkdir blog-backend
cd blog-backend
yarn init -y

cat package.json
yarn add koa
yarn add --dev eslint (yarn add --dev는 개발용 모듈로 설치한다는 의미입니당 ㅎ)
yarn add eslint-config-prettier

.eslintrc.js

module.exports = {
  env: {
    browser: true,
    commonjs: true,
    es2021: true,
  },
  extends: ['eslint:recommended', 'prettier'],
  globals: { 
      "Atomics": 'readonly',
      "SharedArrayBuffer" : "readonly"
    },

  parserOptions: {
    ecmaVersion: 'latest',
  },
  rules: {
      "no-unused-vars":"warn",
      "no-console":"off"
  },
};

index.js

const Koa = require('koa');

const app = new Koa();

app.use(ctx => {
    ctx.body = "hello world";
})

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

실행할때에는 node src

미들웨어

Koa 애플리케이션은 미들웨어의 배열로 구성되어 있습니다. 조금 전 코드에서 app.use 함수를 사용했는데 해당 함수는 미들웨어 함수를 애플리케이션에 등록합니다.

미들웨어 함수는 다음과 같은 구조호 이루어져 있습니다.
(ctx, next) => {
}

Koa의 미들웨어 함수는 ctx와 next라는 두개의 파라미터를 받습니다.
ctx는 Context의 줄임말로 웹 요청과 응답에 관한 정보를 지니고 있습니다.
next는 현재 처리중인 미들웨어의 다음 미들웨어를 호출하는 함수입니다. 미들웨어를 등록하고 next함수를 호출하지 않으면, 그 다음 미들웨어를 처리하지 않습니다.

만약 미들웨어에서 next를 사용하지 않으면 ctx => {} 와 같은 형태로 파라미터에 next를 설정하지 않아도 괜찮습니다.
다음 미들웨어를 처리할 필요가 없는 라우트 미들웨어를 나중에 설정할 때 이러한 구조로 next를 생략하여 작성합니다.

0개의 댓글