controller
- Express에서도 MVC패턴을 구현할 수 있다.
기존에 routes/router에 작성한 미들웨어를 같은 기능을 하는 컨트롤러를 따로 모아 관리할 수 있다.
router.get('/', (req, res) => {
res.render('index', { title: 'Express' })
})
router.get('/', firstController.main);
const main = (req, res) => {
res.render('index', { title: 'Express' })
};
module.exports = {
main,
}
2. REST API
- 일반적인 웹 방식의 호출에선 html 데이터를 반환한다. 따라서 브라우저가 아닌 다른 기기에선 읽을 수 없는 문제가 발생한다.
- 모든 기기에서 호응 가능한 데이터만을 주고 받을 수 있도록 제작한 API를 일컫는다.
- HTTP URI를 통해 자원(resource)를 명시하고, HTTP method를 통해 해당 자원에 대한 CRUD operation을 적용하는 것을 의미.
router.get('/', (req, res) => {
return res.status(200).json({message: 'call success', result})
})
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(400).send({message: '잘못된 접근입니다'});
}
res.status()
를 통해 통신 상태를 응답한다.
3. CORS
- Cross Origin Resource Sharing
- fetch API의 same-origin-policy를 넘어서 데이터를 전송할 수 있게 한다.
- 해결방법
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
});
app.use(cors({
origin: '*',
methods: ['GET', 'POST', 'DELETE', 'UPDATE', 'PUT', 'PATCH']
}));