정의
- 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트(res), 미들웨어 함수에 대한 엑세스 권한을 갖는 함수(일반적으로 next라는 이름의 변수로 표시된다)
- 모든 코드를 실행
- 요청 및 응답 오픚게트에 대한 변경을 실행
- 요청-응답 주기를 종료
- 스택 내의 그 다음 미들웨어를 호출
- 현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않은 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 한다. 그렇지 않으면 해당 요청은 정지된 채로 방치된다
- 미들웨어 로드 순서는 먼저 로드되는 미들웨어 함수가 먼저 실행된다
미들웨어 함수 호출 요소
cosnt app = express();
app.get('/', function(req, res, next){
next();
})
app.listen(3000);
- get : 미들웨어 함수가 적용되는 http 메소드
- '/' : 미들웨어 함수가 적용되는 경로(라우트), 해당 루트(path)인 경우에 미들웨어가 실행됨
- function : 미들웨어 함수
function(req, res, next) {}
부분이 미들웨어
- req : 미들웨어 함수에 대한 http 요청 인수
- res : 미들웨어 함수에 대한 http 응답 인수
- next : 미들웨어 함수에 대한 콜백 인수, next() 함수를 호출함으로써 스택 내의 다음 미들웨어 함수에 요청을 전달
자주쓰는 메소드 종류
app.use()
- 미리 만들어진 모듈을
npm install
로 설치해 불러서 사용할 수 있다
- 미들웨어를 전역 처리 스택에 추가한다, 모든 요청이 들어올 때마다 미들웨어가 실행됨
- app.use()는 express앱에서 항상 실행하는 미들웨어 역할
- app.use(미들웨어): 모든 요청에서 해당 미들웨어 실행
- app.use('/path', 미들웨어): path로 시작하는 요청에서 미들웨어 실행
const ex = require('미들웨어');
app.use(ex);
app.use((req, res) => {
console.log('get request!!');
})
공식문서-미들웨어 모듈
[공식문서-메소드 종류]
app.set(name, value)
app.set('title', 'My Site')
app.get('title')
app.get()
- 클라이언트로부터 get 요청을 받는 경우
- URL에 parameter를 함께 보내 요청
- app설정 값을 반환
app.get('title')
app.set('title', 'My Site')
app.get('title')
app.post()
- 클라이언트로부터 post 요청을 받는 경우
- request body에 파라미터를 보내 정보를 추출
app.delete()
- 클라이언트로부터 delete 요청을 받는 경우
app.listen()
- node의 http.Server.listen()과 동일
- http.Server 개체를 반환, http 서버에 전달되도록 설계
- 서버연결
응답 메소드
- res.download():파일이 다운로드되도록 프롬프트한다.
- res.end():응답 프로세스를 종료한다.
- res.json():JSON 응답을 전송한다.
- res.jsonp():JSONP 지원을 통해 JSON 응답을 전송한다.
- res.redirect():요청의 경로를 재지정한다.
- res.render():보기 템플리트를 렌더링한다.
- res.send():다양한 유형의 응답을 전송한다.
- res.sendFile():파일을 옥텟 스트림의 형태로 전송한다.
- res.sendStatus():응답 상태 코드를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송한다.
참고 레퍼런스
https://velog.io/@wjddnjswjd12/node.js-express-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4%EB%9E%80