미들웨어_Express

miin·2022년 4월 3일
0

Express & node.js

목록 보기
2/10
post-thumbnail

정의

  • 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트(res), 미들웨어 함수에 대한 엑세스 권한을 갖는 함수(일반적으로 next라는 이름의 변수로 표시된다)
  • 모든 코드를 실행
  • 요청 및 응답 오픚게트에 대한 변경을 실행
  • 요청-응답 주기를 종료
  • 스택 내의 그 다음 미들웨어를 호출
  • 현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않은 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 한다. 그렇지 않으면 해당 요청은 정지된 채로 방치된다
  • 미들웨어 로드 순서는 먼저 로드되는 미들웨어 함수가 먼저 실행된다

미들웨어 함수 호출 요소

cosnt app = express();
//app.get()의 인자안의 함수가 미들웨어이다
//해당 루트(path('/'))인 경우에 미들웨어가 실행됨
app.get('/', function(req, res, next){
  //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')
// => "My Site"

app.get()

  • 클라이언트로부터 get 요청을 받는 경우
  • URL에 parameter를 함께 보내 요청
  • app설정 값을 반환
app.get('title')
// => undefined

app.set('title', 'My Site')
app.get('title')
// => "My Site"

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

0개의 댓글