본문 바로가기

Programming

(477)
7. 익스프레스 (2) - Router 객체를 통한 라우팅 2 앞선 아티클에서 next 함수를 사용하게 되면, 다음 라우터로 넘어가게 된다는 기능이 있다고 설명했습니다. 이는 정확히 next('route') 기능입니다. 이를 사용하게 되면, 라우터에 연결된 나머지 미들웨어들을 건너뛰게 됩니다. 아래 예시를 보겠습니다.  router.get('/', (req, res, next) => { next('route');}, (req, res, next) => { console.log('실행 안됨'); next();}, (req, res, next) => { console.log('실행 안됨'); next();});router.get('/', (req, res) => { console.log('실행됨'); res.send('Hello E..
7. 익스프레스 (2) - Router 객체를 통한 라우팅 1 앞선 아티클에서 우리는 RESTful 서버를 구현하면서 요청 메서드, 그리고 주소별로 분기 처리를 하는 예제를 살펴보았습니다.    5. http 모듈로 서버 만들기 (2) - REST와 라우팅 [6]앞선 아티클에서 여러가지 파일 코드를 작성했습니다. 특히 핵심인 [restServer.js]의 일부를 작성했는데요, 그 나머지 부분을 작성해 보겠습니다.   [restServer.js]const http = require('http');const fs = requirnozeroslope.tistory.com  보시다시피 if문을 기반으로 라우팅 처리를 진행해서 꽤나 코드가 길고 복잡하다는 것을 알 수 있습니다. 우리가 익스프레를 사용하는 큰 이유 중 하나가 바로 이 라우팅을 간결하게 관리할 수 있다는 점입니..
7. 익스프레스 (1) - 미들웨어 [10] : multer 4 마지막으로 특수한 경우를  살펴보겠습니다. 바ㅍ로, 파일을 업로드하지 않고도 멀티 파트 형식으로 업로드하는 경우입니다. 이럴 때는 none 미들웨어를 사용하게 됩니다.   [multipart.html]  업로드   app.post('/upload', upload.none(), (req, res) => { console.log(req.body); res.send('ok');});  사실 이 경우는 파일을 업로드하지 않았으므로 req.body만 존재하게 됩니다.      지금까지 파일 업로드 타입에 따라서 미들웨어가 달라지는 경우를 하나씩 살펴보았는데, 요약하면 다음과 같습니다.  (1) multer → single : 이미지 하나는 req.file로 / 나머지 정보는 req.body..
7. 익스프레스 (1) - 미들웨어 [10] : multer 3 multer 사용 방법에 대해서, 앞선 아티클에 이어서 살펴보겠습니다.   7. 익스프레스 (1) - 미들웨어 [10] : multer 2앞서서 살펴본 multer 미들웨어 사용에 대한 내용을 이어서 살펴보겠습니다. const multer = require('multer');const upload = multer({ storage: multer.diskStorage({ destination(req, file, done) { done(null, 'uploads/'); }, filename(rnozeroslope.tistory.com  이번에는 여러 개의 파일을 업로드하는 경우 입니다. 우선 HTML 파일에서 input 태그에 multiple을 작성합니다. [multipart.html] ..
7. 익스프레스 (1) - 미들웨어 [10] : multer 2 앞서서 살펴본 multer 미들웨어 사용에 대한 내용을 이어서 살펴보겠습니다. const multer = require('multer');const upload = multer({ storage: multer.diskStorage({ destination(req, file, done) { done(null, 'uploads/'); }, filename(req, file, done) { const ext = path.extname(file.originalname); done(null, path.basename(file.originalname, ext) + Date.now() + ext); },..
7. 익스프레스 (1) - 미들웨어 [10] : multer 1 multer는 다소 사용법이 어렵지만, 이미지나 영상 등의 파일을 업로드하는 미들웨어로 활용도가 매우 높습니다. multer는 "멀티파트" 형식으로 여러가지 포맷의 파일을 업로드할 때 사용하는 미들웨어입니다.  여기서 멀티파트 형식은, 아래 html과 같이 enctype이 multipart/form-data인 폼을 통해 업로드하는 데이터의 형식을 의미합니다.  업로드   이러한 폼을 통해 업로드하게 되는 파일은, body-parser로는 처리가 어렵고 직접 파싱하기도 어렵습니다. 이런 경우에 multer를 사용하게 됩니다.  우선 해당 파일이 있는 폴더에서 multer 패키지를 설치해보겠습니다.  $ npm i multer     파일이 아닌 예제 코드를 살펴보면서 하나씩 설명해 보겠..
7. 익스프레스 (1) - 미들웨어 [9] : 미들웨어의 특성 정리 2 앞선 아티클에서 전반적인 미들웨어의 특성에 대해 정리했습니다. 이어서 계속 살펴보겠습니다.    7. 익스프레스 (1) - 미들웨어 [9] : 미들웨어의 특성 정리 1- 미들웨어는 req, res, next를 파라미터로 갖는 함수로서 app.use / app.get / app.post 등으로 장착합니다. - 에러 처리 미들웨어는 예외적으로 err, req, res, next를 파라미터로 가지게 됩니다. app.use((req, res,nozeroslope.tistory.com  - 미들웨어 간에 데이터를 전달하는 방식에는 세션을 사용하는 방법이 있습니다. req.session 객체에 데이터를 넣는 방식이죠. 단, 이는 세션이 유지되면 데이터도 무조건 계속 유지된다는 단점이 있습니다.  - 요청이 끝날 때..
7. 익스프레스 (1) - 미들웨어 [9] : 미들웨어의 특성 정리 1 - 미들웨어는 req, res, next를 파라미터로 갖는 함수로서 app.use / app.get / app.post 등으로 장착합니다. - 에러 처리 미들웨어는 예외적으로 err, req, res, next를 파라미터로 가지게 됩니다. app.use((req, res, next) => { console.log('모든 요청에 실행됨'); next();});  - 특정한 주소의 요청에만 미들웨어가 실행되게 하려면, 첫 번째 인수로 주소를 넣으면 됩니다. app.get('/', (req, res, next) => { console.log('GET / 요청에서만 실행됨'); next();}, (req, res) => { throw new Error('에러는 에러 처리용 미들웨어로 ..