10_Node.js 글 생성 UI 만들기
10_Node.js 글 생성 UI 만들기
-
App 제작 - 글생성 UI 만들기
-
글쓰기 화면 create 생성
main.js 의 createServer 에서 pathname이 필요한 것인지 확인하기create 링크로 진입하면 pathname은 /create 이다.
‘/’로 접속하면 홈 디렉토리
-
-
else if 구문을 새로 만들어 정상적으로 동작하게 만든다.
else if (pathname === '/create') { fs.readdir('../nodejs1/data', function(err, filelist){ var title='create'; var list = templateList(filelist); var template = templateHTML(title, list, `<h2>${title}</h2>${description}`); response.writeHead(200); response.end(template); }
이어서, 수정을 거쳐서 create 화면을 완성하도록 한다.
-
Form 추가 - var template 수정
var template = templateHTML(title, list, ` <form action="http://localhost:3000/create_process" method="POST"> <input type="text" name="title" placeholder="title"><p> <textarea name="description" placeholder="description"></textarea><p> <input type="submit"> </form> `, '');//공백문자 ''
submit하면 404 에러.
개발자 도구 - Network 탭 - Formdata에서 POST 방식으로 전송된 것을 확인 할 수 있다.
- App 제작 - POST 방식으로 전송된 데이터 받기
create_process 로 전송된 정보 받기
정보를 받기 위해 create else if 조건문 아래에 똑같이 else if 구문을 추가한다
else if (pathname === '/create_process') {
response.writeHead(200);
response.end('succcess');
}
/create 페이지에서 폼으로 데이터를 전송하면 success 문자열이 화면에 나오며
네트워크 탭에서 POST 방식으로 데이터가 전송된 것을 확인 할 수 있음
- nodejs 안에서 POST 방식으로 전달된 데이터를 가져오기
nodejs post data
How do you extract POST data in Node.js?
//qs가 querystring이란 모듈을 가져온다
var qs = require('querystring');
function (request, response) {
if(request.method == 'POST'){
var body='';
function 은 callback 함수이다.
웹 브라우저가 POST 방식으로 데이터를 전달할 때, 데이터가 많으면
처리 할 때 무리가 갈 수 있다. 그런 경우를 대비해서 request.on 을 제공한다.
서버 쪽에서 수신할 때마다 콜백 함수를 호출한다.
호출할 때, data를 인자로 해서 수신한 정보를 준다.
request.on('data', function(data){
//body 데이터에 콜백이 실행될 때마다 데이터를 추가한다
body+=data;
//전송한 데이터가 크면 접속을 끊는다
//Too much POST data, kill the connection
//1e6 === 1*Math.pow(10,6) === 1*1000000 ~~ 1MB
if(body.length > 1e6)
request.connection.destroy();
});
//더 이상 들어올 데이터가 없으면 'end' 다음에 들어오는 콜백 함수를 호출한다.
//이 콜백함수가 실행됐을 때 정보 수신이 끝난다.
request.on('end', function() {
//querystring 모듈이 가지고 있는 parse 함수에
//지금까지 저장한 body를 입력값으로 주면 post 정보가 들었다는 것
var post=qs.parse(body);
});
}
}
-
createServer에 전달된 callback 함수인 request, response createServer는 nodejs에 웹 브라우저로 접속이 들어올 때 마다 createServer의 callback 함수를 nodejs가 호출한다 주어지는 두 개의 인자 request와 response
- request : 요청할 때 브라우저가 보낸 정보
- response : 응답할 때 브라우저로 보내는 정보
console.log(post); 배열로 이루어진 전송된 데이터를 확인 할 수 있다. { title: ‘zz’, description: ‘zz’ } console.log(post.title); title 값만 가져올 수 있음
‘data’, ‘end’ 라는 이벤트를 통해 웹 브라우저로부터 post 방식으로 전송된 데이터를 가져올 수 있고,
var post=qs.parse(body); 쿼리 스트링 모듈의 parse 함수를 이용해 전송된 정보를 객체화 할 수 있다.
var title = post.title;
var description = post.description; 을 이용해서 title과 본문 값을 알아낼 수 있다.
다음은 받아낸 정보를 처리하기