47. Express -2

10763 단어 expressTILTIL

⭐️ 라우팅

쉽게 ! METHOD와 paht를 이용해서 분기 하는 것

라우트 기본 정의
app.METHOD(PATH, HANDLER)
✅ app은 express의 인스턴스.
✅ METHOD는 HTTP 요청 메소드.
✅ PATH는 서버에서의 경로.
✅ HANDLER는 라우트가 일치할때 실행 되는 함수.

const express = require('express')
const app = express() // 인스턴스

app.get('/', (req, res) => {
	res.send('Hello Express')
})
// get은 METHOD. 자주사용하는 METHOD로 get, post, put, delete가 있다.
// '/' 은 PATH, endpoint라고도 부른다.
// arrow function 은 HANDLER.

모듈과 라우터

// ➊ controller.js 담고 있는 파일을 만든다.
// 객체 형태로 여러 메소드를 담는다.
module.exports = { // 전체를 exports한다.
  findThem: (req, res)=>{
    res.send(req.query.data)
  },
  filterThem: (req, res)=>{
    res.send(req.query.data.filter((item) => iteam > 0)
  }
}

// ➋ themRouter.js 파일에서 controller를 불러와서 라우터를 구성한다.
const { findThem, filterThem } = require('/Controller');
const express = require('express');
const router = express.Router();

router.get('/', fideThem);

router.post('/', filterThem);

module.exports = router // exports 한다.

// ➌ app.js라는 파일에서 themRouter을 사용한다.
const express = require('express');
const app = express();
const themRouter = require('/bookRouter');

app.use('/store', themRouter); //app.use는 모든 요청에서 사용!
// 이렇게 사용 할 수 있다.
// 이것은 아래와 같다 

app.get('/store/', (req, res)=>{
    res.send(req.query.data)
  })

app.post('/store/', (req, res)=>{
    res.send(req.query.data.filter((item) => iteam > 0)
  })
// 📌 path에 중복경로를 매번 기입하지 않아도된다.
// 📌 controller의 재사용성이 좋아진다.
  

⭐️ 미들웨어

미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수입니다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됩니다.
미들웨어 함수는 다음과 같은 태스크를 수행할 수 있습니다.

  • 모든 코드를 실행.
  • 요청 및 응답 오브젝트에 대한 변경을 실행.
  • 요청-응답 주기를 종료.
  • 스택 내의 그 다음 미들웨어를 호출.
    -Expressjs-

🤔 쉽게 말해서 서버에 요청하고 응답하기 까지의 과정에서 귀찬고 복잡하고 번거로운 작업을 미들웨어가 중간에서 쉽게할 수 있도록 도와 주는 역할을 한다고 보면 된다.

CORS Cross-Origin Resource Sharing

// 요청 허용 기준을 담고있는 CORS를 자동으로 요청/응답시 적용해주는 미들웨어.
const cors = require('cors'); // 내장 객체가아니라서 npm install cors 필요
app.use(cors());// 사용법은 간단하다. 허용 기준의 수정도 가능하다.

next()

실행중인 미들웨어에 의해 요청-응답 주기가 종료되지 않는다면, 다음 미들웨어 함수를 실행시키기 위해 next()를 호출 해야한다. 그렇지 않는다면 요청이 정지된채로 방치되게 된다.

좋은 웹페이지 즐겨찾기