Node.js/NodeBird(ZeroCho)

Express Router 분리하기

느리지만 꾸준하게 2021. 11. 2. 14:36

아래 코드에서 api라는 것들을 안적어져도 될 거 같다. 주소중에서도 post와 같이 겹치는게 있을수도 있는데

// back 폴더의 app.js

const express = require('express');

const app = express();

app.get('/', (req, res) => {
    res.send('hello express');
})

app.get('/', (req, res) => {
    res.send('hello api');
});

app.get('/posts', (req, res) => {
    res.json([
        { id: 1, content: 'hello'},
        { id: 2, content: 'hello2'},
        { id: 3, content: 'hello3'},
    ]);
})

// 라우터 증식
app.post('/post', (req, res) => {
    res.json([{ id: 1, content: 'hello'},]);
});

app.delete('/post', (req, res) => {
    res.json({ id: 1 });
});

app.listen(3065, () => {
    console.log('서버 실행 중');
});

back folder안에다가 routes폴더를 만들고 그 안에 post.js를 만들어준다.

 

노드에서는 import export를 안쓴다. require를 쓴다. 그리고 module.exports를 쓴다.

// routes 폴더안에 post.js

const express = require('express');

const router = express.Router();

router.post('/post', (req, res) => {
    res.json([{ id: 1, content: 'hello'},]);
});

router.delete('/post', (req, res) => {
    res.json({ id: 1 });
});

export default router;
// app.js


const express = require('express');
// 라우터 분리.
const postRouter = require('./routes/post')


const app = express();

app.get('/', (req, res) => {
    res.send('hello express');
})

app.get('/', (req, res) => {
    res.send('hello api');
});

app.get('/posts', (req, res) => {
    res.json([
        { id: 1, content: 'hello'},
        { id: 2, content: 'hello2'},
        { id: 3, content: 'hello3'},
    ]);
})


// 라우터가 분리가 된다.
app.use(postRouter);


app.listen(3065, () => {
    console.log('서버 실행 중');
});

 

그리고 app.js에서 아래와 같이 '/post를 추가해서 변경시켜주고

app.use('/post', postRouter);


app.listen(3065, () => {
    console.log('서버 실행 중');
});

routes폴더의 post.js에서는 post 부분을 지워준다.

router.post('/', (req, res) => {
    res.json([{ id: 1, content: 'hello'},]);
});

router.delete('/', (req, res) => {
    res.json({ id: 1 });
});

post가 prefix로 붙어서 중복되는 것을 앞으로 뽑아 준것이다.

 

postRouter애들은 실제로는 아래와 같다.

router.post('/', (req, res) => { // POST / post
    res.json([{ id: 1, content: 'hello'},]);
});

router.delete('/', (req, res) => { // DELETE / post
    res.json({ id: 1 });
});

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<출처 조현영: [리뉴얼] React로 NodeBird SNS 만들기>

https://www.inflearn.com/course/%EB%85%B8%EB%93%9C%EB%B2%84%EB%93%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EB%A6%AC%EB%89%B4%EC%96%BC/dashboard

 

[리뉴얼] React로 NodeBird SNS 만들기 - 인프런 | 강의

리액트 & 넥스트 & 리덕스 & 리덕스사가 & 익스프레스 스택으로 트위터와 유사한 SNS 서비스를 만들어봅니다. 끝으로 검색엔진 최적화 후 AWS에 배포합니다., 새로 만나는 제로초의 리액트 노드버

www.inflearn.com