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