BackEnd/Node.js
Node.js) express로 간단한 CRUD 만들기 | 라우터, 컨트롤러(router, controller)
namhj
2022. 10. 14. 14:56
반응형
controller 구현
- 먼저 간단하게 유저정보를 CRUD를 수행하는 콘트롤러를 구현한다.
- 데이터의 실질적인 CRUD 작업을 수행한다.
controllers/user.js
import { v4 as uuidv4 } from "uuid";
// 지금 단계에서는 데이터베이스와 연결은 안되어 있으므로
// 데이터를 조작할 변수를 선언해준다.
let users = [];
//모든 users 내용을 출력해주는 함수
//get all users
export const getUsers = (req, res) => {
console.log(`get request users`);
res.send(users);
}
//특정 id값을 받아서 해당 유저의 내용만 출력하는 함수
//get a user
export const getUser = (req, res) => {
const { id } = req.params;
const foundUser = users.find((user) => user.id === id);
res.send(foundUser);
}
//새로운 유저 정보를 입력하는 함수
//create a user
export const createUser = (req, res) => {
const user = req.body;
users.push({ ...user, id: uuidv4() });
res.send(`User with the name ${user.name} added to the database`);
}
//특정 id값을 받아서 해당 유저를 삭제하는 함수
//delete a user
export const deleteUser = (req, res) => {
const { id } = req.params;
users = users.filter((user) => user.id !== id);
res.send(`User with the id ${id} deleted from the database`);
}
//특정 id 값을 받아서 해당 유저의 정보를 수정하는 함수
//update a user
export const updateUser = (req, res) => {
const { id } = req.params;
const { name, age } = req.body;
const user = users.find((user) => user.id === id);
if (name) {
user.name = name;
}
if (age) {
user.age = age;
}
res.send(`User with the id ${id} has been updated`);
}
Router의 구현
- 요청에 따른 위의 함수를 수행하기 위해서 라우터를 구현해준다.
- 요청은 /users 로 시작하도록 하는데, 여기에서는 users이후의 요청 방식만 정의해준다.
routes/users.js
//라우터 기능 사용을 위해 임포트
import express from "express";
//각 컨트롤러와 라우터 연결을 위해서 컨트롤러에 정의된 함수들을 임포트
import { getUsers, getUser, createUser, deleteUser, updateUser } from "../controllers/users.js";
//라우터 생성
const router = express.Router();
//이곳에 정의된 라우터는 /users로 요청 URL을 시작하도록 할 것이지만,
//index.js에서 정의해줄 것이므로 /users이후의 요청을 정의해준다.
//get요청에 파라미터가 없으면 모든 유저를 출력하는 함수를 실행 한다
//get all users
router.get("/", getUsers);
//get요청에 아이디 파라미터가 있으면 해당 유저만 출력하는 함수 실행
//get a user
router.get('/:id', getUser);
//post요청에 파라미터가 없으면 유저를 생성하는 함수 실행
//대신 요청할때 body에 생성할 데이터를 넣어줘야함
//create a user
router.post('/', createUser);
//delete요청에 아이디 파라미터가 있으면 해당 유저를 삭제하는 함수 실행
//delete a user
router.delete('/:id', deleteUser);
//patch요청에 아이디 파라미터가 있으면 해당 유저 정보를 수정하는 함수 실행
//update a user
router.patch('/:id', updateUser);
export default router;
Index.js에 Routes 포함시키기
import express from 'express';
import usersRoutes from './routes/users.js';//정의된 user라우터를 포함시키기
import bodyParser from 'body-parser';
const app = express();
const PORT = 5000;
app.use(bodyParser.json());
//usersRoutes를 사용, 그리고 '/users'로 요청하도록 설정
app.use('/users', usersRoutes);
app.get('/', (req, res) => {
res.send('Hello from Hompage!');
});
app.listen(PORT, () => console.log(`Listening on port ${PORT}`));
소스코드 참고
https://github.com/nowispresent/tutorials/blob/main/nodeJS/expressTutorial/index.js
GitHub - nowispresent/tutorials: tutorials
tutorials. Contribute to nowispresent/tutorials development by creating an account on GitHub.
github.com
참고한 강의 영상
https://www.youtube.com/watch?v=l8WPWK9mS5M&t=718s&ab_channel=JavaScriptMastery
반응형