이의준

request.post모듈을 이용해 server에 데이터 전송(get 미구현)

1 +앞으로 할일.
2 +req로 보낼 데이터 형식 지정
3 +서버에서 받아와서 어떻게 게시할지 정하기
...\ No newline at end of file ...\ No newline at end of file
1 -// aws 인스턴스 - chatbot /home/ubuntu/server/server.js 파일임. 1 +// aws 인스턴스 - chatbot /home/ubuntu/server_termp/server.js 파일임.
2 +// 작동법 : form.html 파일을 chrome에서 open -> busNumber 입력 후 submit -> http://34.206.171.225:23023/server로 리다이렉트
3 +// server 컴퓨터인 chatbot 인스턴스에서는 {busNumber : 0000} 와 같은 데이터를 받을 수 있음.
4 +// express routing은 아직 미구현
2 5
3 var http = require('http'); 6 var http = require('http');
4 var fs = require('fs'); 7 var fs = require('fs');
5 var url = require('url'); 8 var url = require('url');
6 var qs = require('querystring'); 9 var qs = require('querystring');
10 +var express = require('express');
11 +var app_express = express();
7 12
8 var app = http.createServer(function(request,response){ 13 var app = http.createServer(function(request,response){
9 14
...@@ -26,6 +31,7 @@ var app = http.createServer(function(request,response){ ...@@ -26,6 +31,7 @@ var app = http.createServer(function(request,response){
26 var post = qs.parse(body); 31 var post = qs.parse(body);
27 // end 이벤트가 발생하면(end는 한번만 발생한다) 3번에서 저장해둔 body 를 querystring 으로 객체화 32 // end 이벤트가 발생하면(end는 한번만 발생한다) 3번에서 저장해둔 body 를 querystring 으로 객체화
28 console.log(post); 33 console.log(post);
34 + console.log(body);
29 // 객체화된 데이터를 로그로 출력 35 // 객체화된 데이터를 로그로 출력
30 response.writeHead(200, {'Content-Type':'text/html'}); 36 response.writeHead(200, {'Content-Type':'text/html'});
31 response.end('bus Number = ' + post.busNumber); 37 response.end('bus Number = ' + post.busNumber);
...@@ -37,5 +43,9 @@ var app = http.createServer(function(request,response){ ...@@ -37,5 +43,9 @@ var app = http.createServer(function(request,response){
37 } 43 }
38 }); 44 });
39 45
46 +app_express.get("/test1234", (req, res) => {
47 + res.send('Hello world!');
48 +})
49 +
40 app.listen(23023); 50 app.listen(23023);
41 console.log("Listening on 23023"); 51 console.log("Listening on 23023");
...\ No newline at end of file ...\ No newline at end of file
......
1 +<!doctype html>
2 +<html>
3 +<head>
4 + <title>BUS TT</title>
5 + <meta charset="utf-8">
6 + <style type="text/css">
7 + a { text-decoration:none } /* 하이퍼링크 밑줄 미적용
8 + a { color:red; text-decoration:none} : 색깔 변화없음
9 + */
10 + </style>
11 +</head>
12 +
13 +<body>
14 + <h1><p style="text-align:center;">BTT</p></h1>
15 + <br>
16 + <h2> 사색의 광장 Bus Time Table 조회 서비스에 오신 것을 환영합니다.</h2>
17 + <p> 이곳에는 사색의 광장에서 출발하는 모든 버스의 정보가 있습니다.</p>
18 + <br><br>
19 + <h2> 버스별 시간표 조회</h2>
20 +
21 + <script>
22 + var date = new Date();
23 + var yyyy = date.getFullYear();
24 + var mm = date.getMonth() + 1;
25 + var dd = date.getDate();
26 + var hh = date.getHours();
27 +
28 + document.write(yyyy+"년 "+mm+"월 "+dd+"일 오늘 운행하는 버스들 ");
29 + document.write("( "+hh+"시 "+mm+"분 기준 )");
30 + </script>
31 +
32 + <ul>
33 + <li><a href="http://localhost:23023/?busNum=5100">5100</a></li>
34 + <li><a href="http://localhost:23023/?busNum=M5107">M5107</a></li>
35 + <li><a href="http://localhost:23023/?busNum=9">9</a></li>
36 + <li><a href="http://localhost:23023/?busNum=7000">7000</a></li>
37 + <li>etc</li>
38 + </ul>
39 + <br>
40 + <p>설명</p>
41 +
42 +
43 +</body>
44 +</html>
1 +var http = require('http');
2 +var fs = require('fs');
3 +var url = require('url');
4 +var request = require('request');
5 +
6 +function templateTimeTable(busNum, req){
7 + return `
8 + <!doctype html>
9 + <html>
10 + <head>
11 + <title>Time Table</title>
12 + <meta charset="utf-8">
13 + <style type="text/css">
14 + a { text-decoration:none }
15 + </style>
16 + </head>
17 +
18 + <body>
19 + <h1><a href="Index.html"><p style="text-align:center;">BTT</p></a></h1>
20 + <br>
21 + <h2>${busNum} BUS Time Table</h2>
22 + <br>
23 + ${req}
24 + </body>
25 + </html>
26 + `;
27 +}
28 +
29 +function req_post(busNum){
30 + request.post(
31 + {
32 + url: 'http://34.206.171.225:23023/server',
33 + body: {
34 + 'busNum': busNum,
35 + 'testVariable': 'test'
36 + },
37 + json: true
38 + }
39 + );
40 +}
41 +
42 +function req_get(){
43 + request.get(
44 + {
45 + url: 'http://34.206.171.225:23023/test2134',
46 + }
47 + );
48 +}
49 +
50 +var app = http.createServer(function(request,response){
51 + var _url = request.url;
52 + var queryData = url.parse(_url, true).query;
53 + var busNum = queryData.busNum; // function의 parameter로 queryData.busNum은 안되서 새로 변수를 만듦
54 + if(_url == '/'){
55 + _url = '/Index.html';
56 + }
57 + if(_url == '/favicon.ico'){
58 + return response.writeHead(404);
59 + }
60 + response.writeHead(200);
61 + console.log(queryData.busNum);
62 +
63 + if (busNum != null){ // 버스번호를 요청했을때 타임테이블 페이지로 전환
64 + req_post(busNum);
65 + var resFromServer = req_get();
66 + console.log(req_get());
67 + //var resFromServer = '<p> Response from API server ... </p>';
68 + var timetableHTML = templateTimeTable(busNum, resFromServer);
69 + response.end(timetableHTML);
70 + }
71 + else{ // 아니라면, url 따라감
72 + response.end(fs.readFileSync(__dirname + _url));
73 + }
74 +});
75 +app.listen(23023);
76 +console.log("Listening on 23023");
...\ No newline at end of file ...\ No newline at end of file