언어&프레임워크/Node.js
[Node.js]POST방식으로 전송된 데이터 받기
밍풀
2023. 1. 15. 01:44
process_create로 정보가 전송되는 화면 만듦
이제는 그 주소에서 정보를 받을 수 있어야 함
POST방식으로 전송된 데이터를 node.js에서 가져오기 위해서는 어떻게 해야하나?
request.on으로 정보를 가져올 수 있고
querystring 모듈사용해 qs.parse(body)로 정보를 객체화하여 전환할 수도 있음(var post부분)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
else if(pathname==="/create_process"){
var body='';
request.on('data', function(data){//post로 받은 정보가져옴;
body=body+data;
});
request.on('end', function(end){
var post = qs.parse(body);//post로 받은 정보를 전환 객체화됨.
console.log(post);// { title: 'min', description: 'jihlkjj....' }
console.log(post.title);//min
});
response.writeHead(200);
response.end('sucess');
}
|
cs |
지금까지 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
var http = require('http');
var fs = require('fs');
var url = require('url');
var qs = require('querystring');
function HTMLtemplate(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 ListTemplate(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;//사용자가 요청한 값 /?id=CSS 이런식의 쿼리스
var queryData = url.parse(_url, true).query;//{id : 'css'}같은 객체
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 = ListTemplate(filelist);
var template = HTMLtemplate(title, list, `<h2>${title}</h2><p>${description}</p>`);//주소창에 쿼리스트링 부분에 /?id=min 입력시 title이 min으로 치환되어 화면나옴
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;// css 같은 딱 id부분 즉 /?id= 요자리가 title
var list = ListTemplate(filelist);
var template = HTMLtemplate(title, list, `<h2>${title}</h2><p>${description}</p>`);
response.writeHead(200);
response.end(template);
});
})
}
} else if(pathname==="/create"){
fs.readdir('./data', function(error,filelist){
var title ='WEB';
var list = ListTemplate(filelist);
var template = HTMLtemplate(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){//post로 받은 정보가져옴;
body=body+data;
});
request.on('end', function(end){
var post = qs.parse(body);//post로 받은 정보를 객체화시켜 전환;
var title = post.title;
var describes=post.description;
});
response.writeHead(200);
response.end('sucess');
}else{
response.writeHead(404);
response.end('Not Found');
}
});
app.listen(3000);
|
cs |