Post
더보기
import express from 'express';
const app = express();
app.use(express.json());
app.post('/posts', (req, res) => {
console.log(req.body);
res.status(201).send('글이 새로 등록되었어요');
});
app.listen(8080);
Error
더보기
import express from 'express';
import fs from 'fs';
import fsAsync from 'fs/promises';
const app = express();
app.use(express.json());
app.get('/file1', (req, res) => {
fs.readFile('/file1.txt', (err,data)=> {
if(err){
res.sendStatus(404);
}
});
});
// http://localhost:8080/file2
// file2를 읽어 에러가 발생하면 404를 리턴
// 단 file2를 동기식으로 읽음
app.get('/file2', (req, res) => {
try{
const data = fs.readFile('/file2.txt');
}catch(error){
res.sendStatus(404);
}
}
);
app.get('/file3', (req, res) =>{
fsAsync.readFile('file3.txt')
.catch((error) => {
res.sendStatus(404);
});
});
app.get('/file4', async (req, res) => {
try{
const data = await fsAsync.readFile('/filr4.txt');
}catch(error){
res.sendStatus(404);
}
});
app.use((req, res, next) => {
const error = new Error('테스트 에러');
next(error);
});
app.use((error, req, res, next) => {
console.error(error);
res.status(500).json({message: '서버에러'});
})
app.listen(8080);
route()
- 특정 URL에 대한 미들웨어 및 라우팅 로직을 모듈화하고 그룹화 할 수 있음
- 가독성을 향상시키고 유지 보수를 용이하게 함
- route() 메서드는 Router 객체를 반환. 해당 객체로 특정 URL 경로에 대한 라우팅을 설정
더보기
import express from 'express';
const app = express();
app
.route('/posts')
.get((req, res) => {
res.status(200).send('GET : /posts')
}) // GET : /posts
.post((req, res) => {
res.status(200).send('POST :/posts')
}); // POST :/posts
app
.route('/member/:id')
.put((req, res) => {
res.status(201).send('PUT : /member/:id');
}) // PUT : /member/:id
.delete((req, res) => {
res.status(200).send('DELETE : /member/:id');
}); // DELETE : /member/:id
app.listen(8080);
routing
더보기
import express from 'express';
import morgan from 'morgan';
// npm i morgan
import userRouter from './routes/user.js';
import postRouter from './routes/post.js';
const app = express();
app.use(express.json());
app.use(morgan('combined'));
// http://localhost:8080/users
app.use('/users', userRouter);
app.use('/post', postRouter);
app.listen(8080);
routes> user.js
import express from 'express';
const router = express.Router();
router.use((req, res, next) => {
console.log('users에 존재하는 미들웨어!')
next();
});
// http://localhost:8080/users (GET)
// 회원정보 보기로 사용하기 좋음 (get은 정보를 보는 select를 할 때 사용)
router.get('/', (req, res) => {
res.status(200).send('GET : /users 회원정보');
})
// http://localhost:8080/users (POST)
// 회원가입에 사용
router.post('/', (req, res) => {
res.status(201).send('POST : /users 회원가입');
})
// http://localhost:8080/users (PUT)
// 회원 정보 수정
router.put('/:id', (req, res) => {
res.status(201).send('PUT : /users/:id 정보수정');
})
// http://localhost:8080/users (DELETE)
router.delete('/:id', (req, res) => {
res.status(201).send('DELETE : /users/:id 회원탈퇴');
})
export default router; // export를 통해 외부에서 router를 사용할 수 있게 만듬
routes> post.js
import express from 'express';
const router = express.Router();
// http://localhost:8080/post (GET)
router.get('/', (req, res) => {
res.status(200).send('GET : /post 글정보');
})
// http://localhost:8080/post (POST)
router.post('/', (req, res) => {
res.status(201).send('POST : /post 글작성');
})
router.put('/:id', (req, res) => {
res.status(201).send('PUT : /post/:id 글수정');
})
router.delete('/:id', (req, res) => {
res.status(201).send('DELETE : /post/:id 글삭제');
})
export default router; // export를 통해 외부에서 router를 사용할 수 있게 만듬
'Nodejs' 카테고리의 다른 글
params, query (0) | 2024.04.29 |
---|---|
route 활용 (tweet 예제) (2024-04-26) (0) | 2024.04.26 |
Buffer, Stream, pipe, nodemon, Express , npm (2024-04-24) (0) | 2024.04.24 |
Promise, async, await, JSON, fetch(2024-04-23) (0) | 2024.04.23 |
node.js 함수, 객체, 클래스, 상속 (2024-04-19) (1) | 2024.04.19 |