21. Error.js
파일이 없을떄 에러 발생은 여러 종류가 있다.
import express from 'express'
import fd from 'fs'
import fsAsync from 'fs/promises'
const app = express()
app.use(express.json())
//http://localhost:3000/file1
app.get('file1', (req, res) => {
fsAsync.readFile('/file1.txt', (err,data) => {
if(err) {
res.sendStatus(404)
}
})
})
//http://localhost:3000/file2
app.get('file2', (req, res) => {
try{
const data = fs.readFileSync('./file2.txt')
}catch(error){
res.sendStatus(404)
}
})
//http://localhost:3000/file3
app.get('file3', (req, res) => {
fsAsync.readFile('/file3.txt')
.catch((error) => {
res.sendStatus(404)
})
})
//http://localhost:3000/file4
app.get('file4', async (req, res) => {
try{
const data = await fsAsync.readFile('/file4.txt')
}catch(error){
res.sendStatus(404)
}
})
app.listen(3000)
결과 화면
-->

22.Route.js
Router란?
라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드 (GET,POST...)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것이다.Express 없이 라우터를 만들면 요청 메소드와 주소별로 분기 처리하여야 하기 때문에 코드가 매우 복잡해집니다. 따라서 라우팅에 Express를 사용하는 이유 중 하나는 라우팅을 깔끔하게 관리할 수 있기 때문이라고 할 수 있다.
즉, select, insert, update,delete를 합친 기능이라고 보면 된다.
import express from "express"
const app = express()
//insert,select, update,delete를 합친 기능
app.route('/posts')
.get((req, res) => {
res.status(200).send('/posts get 호출')
})
.post((req, res) => {
res.status(200).send('/posts POST 호출')
})
.put((req, res) => {
res.status(200).send('/posts PUT 호출')
})
.delete((req, res) => {
res.status(200).send('/posts delete 호출')
})
app.listen(3000)
결과 화면
-->
23. Routing.js
import express from 'express'
const router = express.Router()
router.use((req, res, next) => {
console.log('posts에 존재하는 미들웨어')
next()
})
// http://localhost:3000/posts (GET)
// 글 보기
router.get('/', (req, res) => {
res.status(200).send('GET: /posts 글 보기')
})
// http://localhost:3000/posts (POST)
// 글 작성하기
router.post('/', (req, res) => {
res.status(201).send('POST: /posts 글 작성하기')
})
// http://localhost:3000/posts (PUT)
// 글 수정하기
router.put('/:id', (req, res) => {
res.status(201).send('PUT: /posts/:id 글 수정하기')
})
// http://localhost:3000/posts (DELETE)
// 글 삭제하기
router.delete('/:id', (req, res) => {
res.status(201).send('DELETE: /users/:id 글 삭제하기')
})
export default router
미들웨어란?
'서로 다른 애플리케이션이 통신하는데 사용되는 소프트웨어'라고 말한다.
express 서버에서는 애플리케이션 요청에 응답하기 전 중간(middle)에서 목적에 맞게 처리하는 함수들을 말한다.
Router는 모든 요청에 대해 실행되는 미들웨어 함수이다. request가 들어올 때마다 콘솔창에는 'posts에 존재하는 미들웨어'가 출력된다.
📌 app.use()
모든 요청에 대해 실행할 미들웨어 함수는 app.use()를 사용한다.
📌 next()
위의 코드들에서도 보았듯이 미들웨어 함수에서 응답을 보내는 것이 아니라면 next()를 호출해서 다음 미들웨어 함수를 실행할 수 있도록 해야 한다!
1) 수정 및 삭제는 데이터가 없기 떄문에 404에러가 발생한다.
예) http://127.0.0.1:3000/posts/1 <== 이런식으로 값을 넣어주면 된다.
// http://localhost:3000/users (PUT)
// 정보수정
router.put('/:id', (req, res) => {
res.status(201).send('PUT: /users/:id 정보수정')
})
// http://localhost:3000/:id (DELETE)
// 회원탈퇴
router.delete('/:id', (req, res) => {
res.status(201).send('DELETE: /users/:id 회원탈퇴')
2) Router
1)user.js 파일
import express from 'express'
const router = express.Router()
router.use((req, res, next) => {
console.log('users에 존재하는 미들웨어')
next()
})
// http://localhost:3000/users (GET)
// 회원정보 보기
router.get('/', (req, res) => {
res.status(200).send('GET: /users 회원정보보기')
})
// http://localhost:3000/users (POST)
// 회원가입
router.post('/', (req, res) => {
res.status(201).send('POST: /users 회원가입')
})
// http://localhost:3000/users (PUT)
// 정보수정
router.put('/:id', (req, res) => {
res.status(201).send('PUT: /users/:id 정보수정')
})
// http://localhost:3000/:id (DELETE)
// 회원탈퇴
router.delete('/:id', (req, res) => {
res.status(201).send('DELETE: /users/:id 회원탈퇴')
})
export default router
2) post.js 파일
import express from 'express'
const router = express.Router()
router.use((req, res, next) => {
console.log('posts에 존재하는 미들웨어')
next()
})
// http://localhost:3000/posts (GET)
// 글 보기
router.get('/', (req, res) => {
res.status(200).send('GET: /posts 글 보기')
})
// http://localhost:3000/posts (POST)
// 글 작성하기
router.post('/', (req, res) => {
res.status(201).send('POST: /posts 글 작성하기')
})
// http://localhost:3000/posts (PUT)
// 글 수정하기
router.put('/:id', (req, res) => {
res.status(201).send('PUT: /posts/:id 글 수정하기')
})
// http://localhost:3000/posts (DELETE)
// 글 삭제하기
router.delete('/:id', (req, res) => {
res.status(201).send('DELETE: /users/:id 글 삭제하기')
})
export default router
3)
routing.js 파일
import express from 'express'
import userRouter from './routes/user.js'
import postRouter from './routes/post.js'
const app = express()
app.use(express.json())
//http://localhost:3000/users
app.use('/users', userRouter)
//http://localhost:3000/posts
app.use('/posts', postRouter)
app.listen(3000)
결과 화면 샘플
-->


'Node.js' 카테고리의 다른 글
Node.js 활용3 (4) | 2024.11.13 |
---|---|
Node.js의 로직 순서 (0) | 2024.11.12 |
Node.js POST 방식 (0) | 2024.11.11 |
3. Node.js 활용2 (14) | 2024.11.09 |
2. Node.js 활용 (0) | 2024.11.08 |