고양이와 코딩
Koa 프레임워크에서 koa-router 사용해보기 본문
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라면, 어떤 조건을 만족하는 항목을 보여 줄지 또는 어떤 기준으로 정렬할지를 정해야 할 때 쿼리 사용)
출처 : 리액트를 다루는 기법 (개정)
'node.js' 카테고리의 다른 글
You have tried to call .then(), .catch(), or invoked await on the result .. 어쩌구 mysql2 에러 해결하기 (1) | 2024.04.06 |
---|---|
[node] 비밀번호 암호화 - 회원가입, 로그인 구현하기 (0) | 2024.02.24 |
미들웨어 및 라우트 실행 과정 (0) | 2024.01.28 |
리액트를 다루는 기술 node.js esm 에러 해결 (2) | 2024.01.14 |