티스토리 뷰
web : back-end/node js
[node js] POST로 받은 데이터를 파싱하여 파일에 저장하기 , ReDirection
무니웜테일패드풋프롱스 2020. 6. 14. 12:57데이터 파싱하기
- request의 on 메서드를 사용한다. on 메서드는 특정 event를 listen 할 수 있게 해주는 기능을 가지는데, 여기서 인자로 'data'와 콜백함수를 넣어줌으로써 'data event'가 발생할 때마다 해당 함수를 수행한다.
- on의 인자로 들어가는 콜백함수에서 데이터 chunk를 인자로 받아서, 만들어놓은 배열에 저장한다.
- request on 메서드에 인자 'end'와 콜백함수를 넣어서 data event를 listen하는 on 기능이 종료되면, 읽어온 데이터를 buffer에 concat하여 string으로 바꿔주고, 특정 인자 (여기서는 '=') 를 기준으로 파싱해준다.
const body=[];
req.on('data', (chunk)=>{
console.log(chunk);
body.push(chunk); //body에 chunk 데이터를 넣는다.
}); // on 은 특정 event를 listen 할 수 있게 해준다. 여기서는 data event가 발생할 때마다 특정 펑션 수행
req.on('end' , ()=>{// on에서 읽어와서 body에 저장한 chunk 데이터를 string으로 바꿔서 파싱해준다.
const parsedBody = Buffer.concat(body).toString();
const message = parsedBody.split('=')[1]; // = 을기준으로 split해서 message에 넣어준다.
});
파일에 쓰기 / 저장
- 파일 읽기 / 쓰기 객체인 fs 를 가져온다.
- writeFileSync('생성될 파일 이름', 저장할 데이터 ); 메서드를 통해 파일에 특정 데이터를 저장한다.
if(url ==='/message' && method === 'POST' ){
const body=[];
req.on('data', (chunk)=>{
console.log(chunk);
body.push(chunk); //body에 chunk 데이터를 넣는다.
}); // on 은 특정 event를 listen 할 수 있게 해준다. 여기서는 data event가 발생할 때마다 특정 펑션 수행
req.on('end' , ()=>{// on에서 읽어와서 body에 저장한 chunk 데이터를 string으로 바꿔서 파싱해준다.
const parsedBody = Buffer.concat(body).toString();
const message = parsedBody.split('=')[1]; // = 을기준으로 split해서 message에 넣어준다.
fs.writeFileSync('message.txt', message); // 해당 message를 file에 저장
});
}
리다이렉션
- response 객체의 statusCode를 302로 설정해준다.
- response 객체의 메서드 setHeader에서 ('Location', '리다이렉션 url')을 해준다.
res.statusCode=302; // 302는 redirection을 위한 status code
res.setHeader('Location', '/'); //로케이션은 /으로 지정 -> 다시 redirection 해서 /로 보내기
return res.end();
'web : back-end > node js' 카테고리의 다른 글
[node js] Express: 미들웨어를 통해 다른 path(route) 처리하기 (0) | 2020.06.15 |
---|---|
[node js] 노드 js의 이벤트 루프 구조 (0) | 2020.06.14 |
[node js] 노드 js의 비동기 실행 이해하기 (0) | 2020.06.14 |
[node js] 노드 js 리퀘스트와 리스폰스 기초 url, setHeader , write (0) | 2020.06.14 |
[node js] 노드 js 서버 만들기 (0) | 2020.06.14 |
댓글