Data miner/Developer

[Developer] [node.js] 7. post방식으로 전송한 데이터를 node.js로 가져오기

carayoon 2020. 1. 8. 16:59
728x90

출처; 생활코딩의 Node.js의 강의 내용 / 이고잉 강사님 감사드립니다 (꾸벅)

node.js는 컨텐츠의 읽기, 쓰기, 수정, 삭제를 웹을 통해서 가능하게 해준다고 하였다. 이 포스팅에서는 사용자가 특정 컨텐츠를 추가해주는 부분을 node.js가 어떻게 처리하는지에 대해서 다루고자 한다. 자, 모든 코딩의 시작은 어떤 것을 잘 검색하는데에 있다. 먼저, "nodejs post data"를 검색한다. https://stackoverflow.com/questions/4295782/how-to-process-post-data-in-node-js 사이트에서 아래의 코드를 활용한다.

https://stackoverflow.com/questions/4295782/how-to-process-post-data-in-node-js

2020/01/08 - [Data miner] - [Developer] [node.js] 6.

 

[Developer] [node.js] 6.

 

출처; 생활코딩의 Node.js의 강의 내용 / 이고잉 강사님 감사드립니다 (꾸벅) node.js는 사용자가 단순히 수용자에 머무는 것이 아니라, 웹 컨텐츠의 읽기, 쓰기, 수정, 삭제를 가능하게 해준다고 하였다. 이 포스..

pongdangstory.tistory.com

먼저, 이전 포스팅에서 우리는 사용자가 작성한 정보를 ./create_process로 전송한다는 것을 배웠다. node.js는 사용자가 웹페이지에 접속할 때마다 http.createServer의 call back함수를 호출하게 된다. 이 함수의 인자는 request, response인자가 있으며, request는 요청할 때 웹브라우저(클라이언트)가 보내주는 정보를 담고 있고, response는 응답할 때 웹브라우저(클라이언트)에게 전송할 정보를 담고 있다. request는 서버에게 보내는 정보를,  response는 웹페이지에 보여주는 정보를 담고 있다고 생각하면 된다. 아래의 코드는 request부분이 관련된다. 

1) else if(pathname == '/create_process'), 먼저 사용자가 클릭한 create 경로가 /create_process인 경우

2) request on의 방법을 사용한다. 이때, data라는 인자를 통해 웹페이지로부터 수신한 정보를 전달하게 된다. 어떤 특정한 양, 총 데이터 중에서 일부의 데이터에 대해서 callback함수를 호출하도록 해야 한다. request on 데이터는 post 방식으로 데이터를 전송할 때, 한 번에 사용하면 로드양이 많을 수 있기 때문이다.

else if(pathname == '/create_process'){
    var body = '';
    request.on('data', function(data){
      body = body + data;
          });

2-1) 정보양이 너무 많을 경우, 접속을 끊어버리는 부분이다.

if (body.length > 1e6)
              request.connection.destory()

3) 정보를 모두 다 받게 되면, 다음의 end function 콜백함수로 호출하도록 한다. qs의 parse함수를 이용해서 정보를 post를 객체화할 수 있다. post가 저장한 data를 받고, dictionary형태로 저장된 post형태에서 필요한 부분을 각각 title과 description에 저장한다. 


    request.on('end', function(){
      var post = qs.parse(body); 
      var title = post.title;
      var description = post.description;
    });
    response.writeHead(404);
    response.end('success');
  }