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. ohhigo
    21/1/24 post 데이터 받기
    감사합니다.
  2. Noah
    2021.01.05 완료
  3. 손민철
    20/12/30 완료
  4. 생활둘기
    2020 12 26
  5. kkn1125
    20.12.22 완료~!
  6. 옹옹
    20201124
  7. 콜라
    20201015 완료
  8. Yong Hyun Lee
    완료 201002
  9. 박병진
    완료
  10. 2020.09.10
  11. 마준
    <form action="http://localhost:3000/create_process" method="post">
    멍청했습니다.
    http://인데 http//로 썼네요!
  12. 마준
    두번째 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">
    이렇게 썼는데 뭔가 틀린게있나요?
  13. 모라토리움
    와 점점 어려워집니다
  14. 코딩하는렌즈쟁이
    2020-07-28 (화)
    완료
  15. Jenny Song
    27th.JULY.2020 완료
  16. 불스택
    20.07.12
    감사합니다
  17. 영호팍
    출석스
  18. Amousk
    좋은 강의 감사합니다.
  19. Katherine Roh
    완료 :)
  20. 김재익
    완료
  21. 김보미
    와뇰
  22. 바다의왕자
    완료
  23. 유현수
    현재는 req.on으로 받을때 Buffer를 이용하네요
  24. 윤영훈
    복습 완료
  25. 감사합니다.
  26. 준바이
    감사합니다
  27. 심여수
    감사합니다
  28. 03.11 완료
  29. eddylee123456
    복습
  30. eddylee123456
    완료
  31. 스티븐잡숴
    완료
  32. 김철새
    옛날부터 자신만의 채팅방 만들고 싶었는데, 뭔가 될랑말랑한게 재밋습니다!
  33. 임은정
    완료
  34. 윤소윤
    감사합니다 : )
  35. 파이어뱃
    2019_12_06 complete
  36. codinginpain
    완료쓰~
  37. 강다리
    달려
  38. 쑤우
    수강완료. 감사합니다.~
  39. 굼벵이
    완료
  40. CronEB
    완료
  41. YesterdayKite
    완료. 감사합니다!
  42. 웅이
    cmd에 [Object: null prototype] { title: 'nodejs', description: 'nodejs is ...' }
    이런식으로 앞에 [Object: null prototype]이 함꼐 출력되는 부분은
    크게 상관없는 부분인가요?
  43. youngjin.lee
    completed
  44. 허공
    190510 감사합니다.
  45. 위준우
    완료
  46. 자유로움
    완료
  47. supernet
    감사합니다.
  48. 지미츄
    감사합니다
  49. 호두
    고맙습니다
  50. popinbompin
    complete
graphittie 자세히 보기