프로젝트 생성
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");
})
Koa 애플리케이션은 미들웨어의 배열로 구성되어 있습니다. 조금 전 코드에서 app.use 함수를 사용했는데 해당 함수는 미들웨어 함수를 애플리케이션에 등록합니다.
미들웨어 함수는 다음과 같은 구조호 이루어져 있습니다.
(ctx, next) => {
}
Koa의 미들웨어 함수는 ctx와 next라는 두개의 파라미터를 받습니다.
ctx는 Context의 줄임말로 웹 요청과 응답에 관한 정보를 지니고 있습니다.
next는 현재 처리중인 미들웨어의 다음 미들웨어를 호출하는 함수입니다. 미들웨어를 등록하고 next함수를 호출하지 않으면, 그 다음 미들웨어를 처리하지 않습니다.
만약 미들웨어에서 next를 사용하지 않으면 ctx => {} 와 같은 형태로 파라미터에 next를 설정하지 않아도 괜찮습니다.
다음 미들웨어를 처리할 필요가 없는 라우트 미들웨어를 나중에 설정할 때 이러한 구조로 next를 생략하여 작성합니다.