고양이와 코딩

Koa 프레임워크에서 koa-router 사용해보기 본문

node.js

Koa 프레임워크에서 koa-router 사용해보기

ovovvvvv 2024. 1. 8. 22:08
728x90

기본 사용법

yarn add koa-router
npm install koa-router
const Koa = require('koa');
const Router = require('koa-router');

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

// 라우터 설정
router.get('/', ctx => {
    ctx.body = '홈';
});

router.get('/about', ctx => {
    ctx.body = '소개';
});

// app 인스턴스에 라우터 적용
app.use(router.routes()).use(router.allowedMethods());

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

 

라우터를 설정할 때, router.get의 첫 번째 파라미터에는 라우트의 경로를 넣고, 

두 번째 파라미터에는 해당 라우트에 적용할 미들웨어 함수를 넣습니다 ! '◡'

(get 대신 post, put, delete ....등 사용가능)

 

 

라우트 파라미터와 쿼리 예제

  • 라우터 파라미터 : 라우터 파라미터는 URL에서 동적으로 변하는 값을 가져올 수 있도록 해줍니다. 예를 들어, `users/:id` 와 같은 경로로 요청이 들어왔을 때 `id` 값을 가져와 해당하는 사용자의 정보를 조회하는 방법이 있습니다.
  • URL 쿼리 : URL 쿼리는 `/?key=value` 형태로 전달되며, 이를 통해 추가적인 데이터를 전송할 수 있습니다. 쿼리값을 가져와 검색, 필터링 등의 작업을 수행할 수 있습니다.

 

라우터의 파라미터 설정

about/:name

과 같은 형식으로 콜론(:)을 사용해서 라우트 경로를 설정하고, 파라미터가 있을수도, 없을수도 있다면 

/about/:name?

과 같은 형식으로 파라미터 이름 뒤에 물음표를 사용합니다 !

 

// 라우터 설정
router.get('/', ctx => {
    ctx.body = '홈';
});
router.get('/about/:name?', ctx => {
    const { name } = ctx.params;
    // name의 존재 유무에 따라 다른 결과 출력
    ctx.body = name ? `${name}의 소개` : '소개';
});

router.get('/posts', ctx => {
    const {id} = ctx.query;
    //id의 존재 유무에 따라 다른 결과 출력
    ctx.body = id ? `포스트 #${id}` : '포스트 아이디가 없습니다.'
});

위 코드에서 확인할 수 있듯

URL쿼리의 경우 (/post/?id = 10)와 같은 형식으로 요청했다면 해당 값을 ctx.query에서 조회할 수 있습니다!

 

또한 쿼리 문자열을 자동으로 객체 형태로 파싱해 주기 때문에 별도의 파싱 함수를 사용할 필요가 없습니다

다만, 문자열 형태의 쿼리 문자열을 조회해야 하는 경우에는 ctx.querystring을 사용합니다 😺

 

 

정리

파라미터와 쿼리는 둘 다 주소를 통해 특정 값을 받아 올 때 사용한다.

일반적으로 파라미터는 처리할 작업의 카테고리를 받아 오거나, 고유 ID 혹은 이름으로 특정 데이터를 조회할 때 사용함!

쿼리는 옵션에 관련된 정보를 받아 옴 ( ex. 여러 항목을 리스팅 하는 API라면, 어떤 조건을 만족하는 항목을 보여 줄지 또는 어떤 기준으로 정렬할지를 정해야 할 때 쿼리 사용)

 

 

 

출처 : 리액트를 다루는 기법 (개정)