제조 판매업, 스타트업을 위한 아톡비즈 상담 솔루션(IVR, ARS 콜백 서비스)
- 작성일25-01-25 14:06
- 조회15
- 작성자Sonny
express 콜백 에서는 라우팅을 지관적으로 표현합니다.이전 express-setup 프로젝트를 가지고 계속 진행을 해보도록 하겠습니다.express 를 npm 을 이용하여 해당 모듈을 package.json 의존성에 추가를 해주고require() 구문을 이용하여 모듈을 불러옵니다. 그리고 express 인스턴스를 app 변수에 생성 및 할당해줍니다.app 에는 우리가 필요한 각종 서버의 라우팅, 미들웨어, 에러 처리 로직을 설정합니다.만약 콜백 라우팅을 추가하고 싶다면, 아래와 같이 늘려주기만 하면 됩니다.라우팅 콜백함수 인자라우팅을 정의하는 부분을 잘 살펴보면, 첫번째 인자는 URL을 나타내고 두번째 인자는 콜백함수를 받습니다.이 콜백함수는 요청을 받아 실행될 함수를 구현합니다.해당 콜백함수는 3개의 인자를 갑니다.요청 객체응답 객체next 객체요청 객체에서는 클라이언트에서 포함한 데이터를 가지고 올 수 있습니다.express 에서 콜백 미리 파싱해주므로, 우리는 편리하게 사용이 가능합니다.paramsquerybodypath variable 또는 path parameter 는 params 로query string 은 query 로 데이터가 들어오는부분이 확인이 가능합니다.이번에는 body 에 포함된 데이터를 받아볼건데요. GET 요청도 body 사용이 가능하지만, 권장하지는 않습니다.이유는 아래와 같습니다.GET 요청은 기본적으로 브라우저에 캐싱이 됩니다. GET 요청을 간단하고 예측 콜백 가능하게 유지함으로써, 캐싱을 보다 쉽게 관리하고 검색이 가능합니다.GET 요청은 안전한 요청이라고 이야기를 합니다. 왜냐하면 리소스에 대해 변경을 하지않고 조회만 해오기 때문입니다. Request Body를 허용하지 않음으로써 GET 요청이 안전하고 유지되도록 보장합니다.보안성: GET 요청은 서버 로그, 브라우저 히스토리 및 다른 시스템에 기록이 되는데 데이터를 URL에 유지함으로써 콜백 이를 쉽게 볼 수 있으며 제3자에게 잠재적으로 가로 챌 수 있음 ->반면 POST 는 덜 가시적이고 추가적인 보안 계층 제공이 가능->GET 요청은 Request Body 를 사용하지 않는 이유는 캐시 및 보안 이슈 때문이다.다시, express 로 돌아와서 body 를 사용하기 위해서는 아래와 같은 사전 작업이 콜백 필요합니다.body-parser 를 미들웨어로 등록해줘야 합니다.POST 요청은 브라우저를 통해서 못하니, postman 을 이용하여 요청을 해보겠습니다.body 에 json 문자열을 그대로 전송하니, 잘 잡힙니다.raw json Ϛpplication/json 입니다.응답 객체는 클라이언트에게 다양한 형태로 응답이 가능하도록 합니다.download()json()redirect()render()send()status()send(): 전송된 데이터에 따라 알맞은 형식으로 바뀌어서 전송send('text') 는 text 형식으로 전송하고, send(';') 은 콜백 HTML 형식으로 전송합니다.download(): 해당 파일을 다운로드 합니다.redirect(): 해당 경로로 강제 이동 합니다.json(): JSON 형태로 응답합니다.render(): express 에서 설정된 템플릿 엔진(pug, ejs 등)을 HTML로 렌더링 할 때 사용status(): HTTP Status Code 를 지정하여 응답합니다. 체이닝 형태로 작성이 가능마지막으로, next 객체는 다음 라우터로 요청을 넘깁니다. 마치 콜백 체이닝 시킵니다.이렇게 라우팅 경로가 중복이 되는 경우, 우선 정의된 라우팅에서 요청을 처리합니다.next()를 호출하여, 이에 대한 처리를 다음으로 넘깁니다.그리고 좀 더 명확하게 하고자 return next() 로 작성해주면 좋습니다.return 을 해주지 않으면 함수가 종료되지 않아 next() 이후에 제어권이 다시 돌아와서 오류가 발생하기 때문에 매우 좋지 않습니다.관련 콜백 글 참조
등록된 댓글
등록된 댓글이 없습니다.