routing은 URI또는 path 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말한다.
각 route는 하나 이상의 핸들러 함수를 가질 수 있고,
app.METHOD(PATH, HANDLER)
- app은 express의 인스턴스이다.
- METHOD는 HTTP 요청 메소드이다.
- PATH는 서버에서의 경로이다.
- HANDLER는 라우트가 일치할 때 실행되는 함수이다.
METHOD 종류
- app.get : 가져오다
- app.post : 생성하다
- app.put: 전체 수정
- app.delete: 제거
- app.patch: 부분 수정 (수정작업은 대부분 patch로 활용하게 됨)
- app.options: 찔러보기
- app.head: 헤더만 불러옴, 거의 안씀.
app.js
const express = require('express')
const app = express()
const port = 3000
const { StatusCodes } = require('http-status-codes');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.get('/', (req, res) => {
res.send('Hello World, I\'m Root');
})
app.get('/user', (req, res) => {
res.status(StatusCodes.OK).json({
message: "getUser"
});
});
app.post('/user', (req, res) => {
res.status(StatusCodes.CREATED).json({
message: "create"
});
console.log(req.body);
});
app.get('users', (req, res) => {
res.status(StatusCodes.OK).json({
message: "get users"
});
});
app.patch('/users', (req, res) => {
res.status(StatusCodes.OK).json({
message: "updated user"
});
});
app.delete('/users', (req, res) => {
res.status(StatusCodes.delete).json({
message: "delete user"
});
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
});
위와 같이 endpoint에 대한 Handler를 작성한 후 서버를 켜서 가고자 하는 path로 이동하면 된다.
user create 예시
Body에 json으로 생성하게 될 user의 정보인 name과 age정보를 서버로 넘기는 데이터이다.
app.post('/user', (req, res) => {
res.status(StatusCodes.CREATED).json({
message: "create"
});
console.log(req.body);
});
post방식에 /user
endpoint로 갈 경우, Handler가 실행된다.
문제점
이렇게 app.js에 routing관련 로직을 작성하여도 실행에는 문제는 없지만, 프로젝트가 더 커지고 복잡해지면 app.js파일에 역할이 너무 많아진다.
서버도 띄워야하고.. 미들웨어도 실행해야하고.. 사용자 요청이 오면 그에 맞는 핸들러도 실행해야하고..
다음 시간에는 router를 분리해보고자 한다.
'Node.js > Node.js Doc' 카테고리의 다른 글
[Node.js - Express] 미들웨어(Middelware)란? (0) | 2022.05.08 |
---|---|
라우터 분리하기 (0) | 2022.05.08 |
[Node.js] bodyparser 미들웨어 사용하기 (0) | 2022.05.08 |
[Node.js] Express 실행 (0) | 2022.05.08 |
[Node.js] express 설치 (0) | 2022.05.08 |