일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- wireshark
- algorithm
- OS
- OOAD
- AWS
- Android
- MongoDB
- postman
- Kotlin
- TypeScript
- docker
- mysql
- Crawling
- Scheduling
- macos
- React
- DATABASE
- HTML
- node.js
- S3
- python
- Util
- mongoose
- linux
- ubuntu
- Network
- sequelize
- css
- Express
- typeorm
- Today
- Total
Seongwon Lim
[node.js] Koa framework 개념 정리 및 사용하기 본문
서론
이번 포스팅 글에서는 노드의 새로운 프레임워크인 Koa framework에 대해서 이야기해보고자 한다. Koa 프레임워크를 이용하여 서버를 세팅 후 실행하는 예제와 Express와 비교했을 때 라우팅 방법이 어떻게 다른지 살펴보고 라우팅을 하는 방법까지 살펴볼 것이다.
What is Koa?
Node.js의 웹 프레임워크인 Express 개발팀에서 2016년도에 개발한 새로운 웹프레임워크이다.
Express와 비교했을 때 설계된 뼈대가 적지만 탄탄하며 Express보다 모듈화되어있어 원하는 대로 Middle Customizing 하는 데에 유리하다. 또한, 비교적 최근 만들어졌기 때문에 ES6 문법 기반으로 작성되어 async/await 로 발생하는 오류를 try/catch 없이 잡아낼 수 있다.
또한 Callback 지옥에서 벗어날 수 있다는 특징이 있다.
Koa framework 세팅하기
Node.js를 통해서 코아를 사용하기 위해서는 코아 모듈을 설치해야 한다.
npm install koa --save 명령어를 이용하면 코아 모듈을 설치할 수 있으며 의존성 패키지에 자동적으로 추가된다.
다음으로는 index.js 파일을 생성하여 코아 서버를 구성해보도록 하자.
const Koa = require('koa');
const app = new Koa();
app.use((ctx, next) => {
ctx.body = "My first koa project";
});
app.listen(3000, () => {
console.log("server started at port 3000");
});
Express와 거의 동일하지만 다른 점을 살펴보면 미들웨어 인자로 들어오는 파라미터의 종류이다. Express의 경우 req, res, next 순서로 들어오는 반면 Koa는 ctx, next 2개가 들어오는 것을 볼 수 있다.
- ctx 는 koa context의 약자로 노드의 request 및 response 오브젝트를 단일 오브젝트로 캡슐화 하여 웹 애플리케이션 및 API 작성에 유용한 많은 메소드를 제공하는 역할을 한다.
Koa framework에서 요청, 응답 처리하는 방법?
Express의 경우에는 클라이언트로부터 온 요청을 받을 때 req.body , req.params 등을 사용했다면 Koa에서는 ctx.request 메서드를 사용하여 처리한다.
응답의 경우에도 ctx.response 메서드를 사용하여 결과를 반환하는 특징을 가지고 있다. 다음 포스팅 글에서 조금 더 자세하게 살펴보고자 한다.
이제 node index.js 명령어로 서버를 실행시킨 뒤 localhost:3000 주소로 접속하면 아래와 같은 결과를 얻을 수 있다.
Koa Routing
코아에서는 라우팅 기능이 내장되어 있지 않으므로 별도의 모듈을 설치해야 한다.
npm install koa-router —-save 명령어를 이용하여 모듈을 설치한다. 라우팅 사용법은 다음과 같다.
const Router = require('koa-router');
const router = new Router();
app.use(router.routes());
app.use(router.allowedMethods());
라우터 사용을 위해 router 인스턴스를 만들고 미들웨어에 다음과 같이 2개의 미들웨어를 추가한다.
만들어진 인스턴스를 이용해서 라우팅을 하는 방법은 다음과 같다.
router.get('', (ctx, next) => {
ctx.body = 'GET method'; // 또는 ctx.response.body = "GET method";
});
GET 메서드를 추가했다. 이제 다시 파일을 저장하고 node index.js 명령어로 서버를 수행 후 localhost:3000 경로로 접속하면 화면에 GET method 문자열이 나타나는 것을 확인할 수 있다.
문자열 뿐만 아니라 ctx.response.body 에는 Buffer, Stream, Object(Array), Null(undefined) 등의 타입이 올 수 있으며 ctx.response.status 를 통해 응답 상태를 반환할 수도 있다. 예를 들어
router.get('', (ctx, next) => {
ctx.response.status = 200;
ctx.response.body = {
message: "GET 메서드 응답 결과입니다.",
success: true,
}
});
코드를 이와 같이 변경한 뒤 포스트맨을 이용하여 GET 요청을 보내보면?
정의한 응답 코드 값과 JSON 데이터가 의도한 대로 응답으로 오는 것을 확인할 수 있다.
다음 포스팅 글에서는 Koa에서 API를 구현할 때 발생하는 에러에 대해서 살펴볼 예정이다.
출처
'Node.js' 카테고리의 다른 글
[node.js] 보안을 위한 dotenv 설치 및 사용 방법 (0) | 2022.05.09 |
---|---|
[node.js] Koa-bodyparser 설치 및 사용 방법 (0) | 2022.05.09 |
[node.js] Typescript를 이용하여 Express 환경 구성하기 (0) | 2022.05.08 |
[node.js] Typescript에서 Bcrypt를 이용한 비밀번호 암호화 (0) | 2022.05.08 |
[node.js] 타입스크립트 파일을 컴파일 후 자바스크립트로 실행하기 (0) | 2022.05.08 |