Elice SW engineer - TIL day 31

Circlewee·2022년 5월 16일
0

Elice SW 2 TIL

목록 보기
28/31

controller

  • Express에서도 MVC패턴을 구현할 수 있다.
    기존에 routes/router에 작성한 미들웨어를 같은 기능을 하는 컨트롤러를 따로 모아 관리할 수 있다.
router.get('/', (req, res) => {
	res.render('index', { title: 'Express' })
})

// mvc 패턴 적용
// routes/router.js
router.get('/', firstController.main);

// controller/firstController.js
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']
}));
profile
공부할 게 너무 많아요

0개의 댓글

관련 채용 정보