Node.js로 백엔드 프로젝트 시작하기
// 프로젝트 폴더 만들기
$ mkdir Project
$ cd Project
// 백엔드 폴더와 프론트엔드 폴더 구분하기
$ mkdir Project-backend
$ mkdir Project-frontend
// 백엔드 폴더에 package.json 파일 만들기
$ cd Project-backend
$ npm init -y
// Koa 웹 프레임워크 설치하기
$ npm install koa --save
1. Koa로 서버 띄우기
const Koa = require('koa');
const server = new Koa();
server.use ((ctx [, next]) => {
...
[next();]
});
// PORT=4000
server.listen(PORT, () => {
console.log(`Listening to port ${PORT}`);
});
- ctx : 서버에 사용자가 보내는 request나 서버에서 돌아오는 response 정보를 가지고 있는 객체입니다.
- next (optional): 이 파라미터는 옵션으로 현재 미들웨어에서 다음 미들웨어를 호출하는 함수입니다.
koa는 공식적으로 async/await를 지원합니다. 사용법은 다음과 같습니다.
koaInstance.use( async ctx => {
await ...
});
2. koa-router 사용하기
koa-router 설치
$ npm install koa-router --save
koa-router 사용
koa-router에서 Router를 불러오고, 라우터 인스턴스를 하나 선언해줍니다.
그리고 해당 라우터에서 사용할 http 메소드 타입을 작성하고, 첫번째 파라미터로 해당 라우터의 pathname을 전달합니다.
router.[post/get/delete/put/patch 중 1 택]
const Koa = require('koa');
const Router = require('koa-router');
const server = new Koa();
const router = new Router();
router.[HTTP Request type]('/[pathname]', ctx => {
...
});
// 서버에 라우터 적용
server.use(router.router()).use(router.allowedMethods());
// PORT=4000
server.listen(PORT, () => {
console.log('Listening to port `${PORT}`... );
});
프론트엔드가 없는 상태에서는 .get으로 전달한 결과물만을 브라우저에서 확인할 수 있습니다.
예를 들어 다음과 같은 코드를 통해서 http://localhost:4000/hello 주소로 가면 hello world 가 화면에 뜨는걸 확인할 수 있습니다.
router.get('/hello', ctx => {
ctx.body = 'hello world';
});
추가로, router의 pathname을 설정할 때 /pathname/:param 으로 파라미터를 설정할 수 있고, /pathname/?query=data 형식으로 쿼리를 설정할 수도 있습니다.
또한 파라미터 뒤에 :param? 처럼 ? 를 붙여주면 없는 파라미터가 없는 경우도 있을 수 있다고 설정하는 것입니다.
- 파라미터
- 설정하기 : /pathname/:param[?]
- 조회하기 : ctx.params
- 쿼리
- 설정하기 : /pathname/?qureyKey=queryValue
- 조회하기 : ctx.query / ctx.querystring (문자열 형태의 쿼리 문자열 조회시)
References
- 리액트를 다루는 기술(김민준)
'웹 개발 > Node.js' 카테고리의 다른 글
내가 보려고 작성하는 [라우터 모듈화 summary] +dotenv, koa,koa-router (0) | 2021.03.03 |
---|---|
라우터 모듈화 koa-router (0) | 2021.02.25 |
nodemon 사용하기 (0) | 2021.02.24 |