Node.js

App - POST 방식으로 전송된 데이터 받기

수업소개

POST 방식으로 전송된 데이터를 받아서 파일로 저장하는 방법에 대해서 알아보겠습니다. 

 

 

강의

 

 

소스코드

main.js (변경사항)

var http = require('http');
var fs = require('fs');
var url = require('url');
var qs = require('querystring');

function templateHTML(title, list, body){
  return `
  <!doctype html>
  <html>
  <head>
    <title>WEB1 - ${title}</title>
    <meta charset="utf-8">
  </head>
  <body>
    <h1><a href="/">WEB</a></h1>
    ${list}
    <a href="/create">create</a>
    ${body}
  </body>
  </html>
  `;
}
function templateList(filelist){
  var list = '<ul>';
  var i = 0;
  while(i < filelist.length){
    list = list + `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
    i = i + 1;
  }
  list = list+'</ul>';
  return list;
}

var app = http.createServer(function(request,response){
    var _url = request.url;
    var queryData = url.parse(_url, true).query;
    var pathname = url.parse(_url, true).pathname;
    if(pathname === '/'){
      if(queryData.id === undefined){
        fs.readdir('./data', function(error, filelist){
          var title = 'Welcome';
          var description = 'Hello, Node.js';
          var list = templateList(filelist);
          var template = templateHTML(title, list, `<h2>${title}</h2>${description}`);
          response.writeHead(200);
          response.end(template);
        });
      } else {
        fs.readdir('./data', function(error, filelist){
          fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
            var title = queryData.id;
            var list = templateList(filelist);
            var template = templateHTML(title, list, `<h2>${title}</h2>${description}`);
            response.writeHead(200);
            response.end(template);
          });
        });
      }
    } else if(pathname === '/create'){
      fs.readdir('./data', function(error, filelist){
        var title = 'WEB - create';
        var list = templateList(filelist);
        var template = templateHTML(title, list, `
          <form action="http://localhost:3000/create_process" method="post">
            <p><input type="text" name="title" placeholder="title"></p>
            <p>
              <textarea name="description" placeholder="description"></textarea>
            </p>
            <p>
              <input type="submit">
            </p>
          </form>
        `);
        response.writeHead(200);
        response.end(template);
      });
    } else if(pathname === '/create_process'){
      var body = '';
      request.on('data', function(data){
          body = body + data;
      });
      request.on('end', function(){
          var post = qs.parse(body);
          var title = post.title;
          var description = post.description
      });
      response.writeHead(200);
      response.end('success');
    } else {
      response.writeHead(404);
      response.end('Not found');
    }



});
app.listen(3000);

 

댓글

댓글 본문
  1. byoonn
    완료
  2. 21.02.27
  3. chimhyangmoo
    21.02.23
  4. 마아앙
    2021.02.09
  5. jeisyoon
    2021.02.09 App - Post 방식으로 전송된 데이터 받기 완료.
    휴 ~~~ 오타로 1시간 허비 진땀 나내요 .
  6. 나그네
    감사합니다.~ 완료
    var description = post.description;
  7. 뭄수
    완료
  8. ohhigo
    21/1/24 post 데이터 받기
    감사합니다.
  9. 2021.01.05 완료
  10. 손민철
    20/12/30 완료
  11. 생활둘기
    2020 12 26
  12. kkn1125
    20.12.22 완료~!
  13. 옹옹
    20201124
  14. 콜라
    20201015 완료
  15. Yong Hyun Lee
    완료 201002
  16. 박병진
    완료
  17. 2020.09.10
  18. 마준
    <form action="http://localhost:3000/create_process" method="post">
    멍청했습니다.
    http://인데 http//로 썼네요!
  19. 마준
    두번째 else if에서
    else if(pathname ==='/create_process'){
    response.writeHead(200);
    response.end('sucess');
    이부분이 동작하지 않는거같아서 맨마지막 else 부분을
    else{
    response.writeHead(404);
    response.end('not found');
    console.log(pathname);
    }
    이렇게 처리해보았습니다.
    그런데 콘솔에서 pathname값이
    /http//localhost:3000/create_process으로 뜨는건 어떻게해야할까요?

    위에 폼액션을
    <form action="http//localhost:3000/create_process" method="post">
    이렇게 썼는데 뭔가 틀린게있나요?
  20. 모라토리움
    와 점점 어려워집니다
  21. 코딩하는렌즈쟁이
    2020-07-28 (화)
    완료
  22. Jenny Song
    27th.JULY.2020 완료
  23. 불스택
    20.07.12
    감사합니다
  24. 영호팍
    출석스
  25. Amousk
    좋은 강의 감사합니다.
  26. Katherine Roh
    완료 :)
  27. 김재익
    완료
  28. 김보미
    와뇰
  29. 바다의왕자
    완료
  30. 유현수
    현재는 req.on으로 받을때 Buffer를 이용하네요
  31. 윤영훈
    복습 완료
  32. Phill
    감사합니다.
  33. 준바이
    감사합니다
  34. 심여수
    감사합니다
  35. 03.11 완료
  36. eddylee123456
    복습
  37. eddylee123456
    완료
  38. 스티븐잡숴
    완료
  39. 김철새
    옛날부터 자신만의 채팅방 만들고 싶었는데, 뭔가 될랑말랑한게 재밋습니다!
  40. 임은정
    완료
  41. 윤소윤
    감사합니다 : )
  42. 파이어뱃
    2019_12_06 complete
  43. codinginpain
    완료쓰~
  44. 강다리
    달려
  45. 쑤우
    수강완료. 감사합니다.~
  46. 굼벵이
    완료
  47. CronEB
    완료
  48. YesterdayKite
    완료. 감사합니다!
  49. 웅이
    cmd에 [Object: null prototype] { title: 'nodejs', description: 'nodejs is ...' }
    이런식으로 앞에 [Object: null prototype]이 함꼐 출력되는 부분은
    크게 상관없는 부분인가요?
  50. youngjin.lee
    completed
graphittie 자세히 보기