일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 FCM
- FlutterView MethodChannel
- 스위프트
- 플러터 뷰 컨트롤러
- 푸시 데이터 저장
- 안드로이드 바로가기
- 안드로이드 에러
- 앱 백그라운드 푸시 데이터 저장
- Swift flutterview
- 앱 꺼졌을 때 푸시 데이터 저장
- 스위프트 카메라
- 노티피케이션 익스텐션
- Flutter NativeView
- 스위프트 푸시
- 안드로이드 앨범
- native flutter view
- swift 문자
- Flutter UIKitView MethodChannel
- 안드로이드 숏컷
- NotificationService Extension
- flutter 회전
- swift sms
- Swift flutterviewcontroller
- silent push
- swift autolayout
- flutter rotate
- 스위프트 앨범
- 스위프트 테이블 뷰 셀
- 스위프트 웹뷰
- 스위프트 UserDefaults
- Today
- Total
Things take time
[NodeJS] 4일차 - 서버 만들기 본문
[서버 구축하기]
- Node.js를 이용하여 서버를 구축할 때는 http라는 모듈을 이용하여 listen으로 등록함
var http = require('http'); /* // 서버 객체 만들기 var server = http.createServer(); // 웹서버를 시작하여 지정 포트에서 대기하도록 설정 var port = 3000; server.listen(port, function(){ console.log('웹 서버가 시작되었습니다. %d', port); }); */ // 특정 ip에만 지정하여 서버만들때 var host = '127.0.0.1' var server = http.createServer(); var port = 3000; // 50000 : timeout server.listen(port, host, '50000', function(){ console.log('웹 서버가 시작되었습니다. %s, %d', host, port); }) server.on('connection', function(socket){ var addr = socket.address(); console.log('클라이언트가 접속했습니다 : %s, %d', addr.address, addr.port); }) server.on('request', function(req, res){ console.log('클라이언트 요청이 들어왔습니다.'); // console.dir(req) })
그리고 url에서 localhost:3000으로 접속 시
[Http 모듈을 이용한 다른 웹사이트 정보 얻기]
var http = require('http'); var options = { host : 'www.google.com', port : 80, path : '/' }; // http://google.com:80/ var req = http.get(options, function(res){ var resData = ''; res.on('data', function(chunk){ resData += chunk; }); res.on('end', function(){ console.log(resData); }); res.on('error', function(err){ console.log('오류 발생 : ' + err.message); }); });
[익스프레스]
http모듈로는 시간, 노력이 너무 많이 들어 express모듈을 이용함
cmd에 npm init 입력 -> 패키지.json 파일을 생성하여 다운받은 모듈의 집합을 기록하도록 함(추후 다른 곳에 이동시킬 때 이 json만 있으면 모듈 하나하나를 가져갈 필요 없음)
entry point = index.html과 같은 초기 페이지 파일, 따로 만들어야함
- 미들웨어 : 기능상의 분리, 클라이언틔 웹 요청을 기능에 맞게 분리
- 라우터 : 미들웨어에서 해당 기능에 맞는 정보를 처리할 곳, 페이지(화면)를 지정해주는 것, /user, /login 등..
var express = require('express'), http = require('http'); var app = express(); app.set('port', process.env.PORT || 3000); http.createServer(app).listen(app.get('port'), function(){ console.log("익스프레스 서버 시작 : " + app.get('port')); }); app.use(function(req, res, next){ console.log("첫 번재 미들웨어"); req.user = "gyeom"; next(); }) app.use('/', function(req, res, next){ console.log("두 번재 미들웨어"); res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'}); res.end('<h1>Express서버에서' ...);
app.use의 첫 번째 미들웨어는 해당 경로를 들어왔을 때 무조건 호출되는 미들웨어로 여러 개의 미들웨어 사용시 next()를 꼭 해줘야함
그리고 이후 사용시 url에 전달되는 해당 경로 이후에 따라 분기처리됨
예) localhost:3000 => 첫 번째 미들웨어 + 두 번째 미들웨어
localhost:3000/test => 첫 번째 미들웨어만 호출(/test라는 app.use가 등록이 되어 있어야 함)
[Get, Post 파라미터 얻기]
get의 경우 app.use(function(req, res, next) { });에서
req.query.쿼리를 통해 해당 쿼리에 대한 요청 파라미터를 확인할 수 있음
post의 경우 url이 아닌 본문(body)영역에 들어가있기 때문에 아래와 같이 사용함 (body-parser란 모듈 사용)
// Express 기본 모듈 불러오기 var express = require('express') , http = require('http') , path = require('path'); // Express의 미들웨어 불러오기 var bodyParser = require('body-parser') , static = require('serve-static'); // 익스프레스 객체 생성 var app = express(); // 기본 속성 설정 app.set('port', process.env.PORT || 3000); // body-parser를 이용해 application/x-www-form-urlencoded 파싱 app.use(bodyParser.urlencoded({ extended: false })) // body-parser를 이용해 application/json 파싱 app.use(bodyParser.json()) app.use(static(path.join(__dirname, 'public'))); // 미들웨어에서 파라미터 확인 app.use(function(req, res, next) { console.log('첫번째 미들웨어에서 요청을 처리함.'); var paramId = req.body.id || req.query.id; var paramPassword = req.body.password || req.query.password; res.writeHead('200', {'Content-Type':'text/html;charset=utf8'}); res.write('<h1>Express 서버에서 응답한 결과입니다</h1>');
res.write('
'); res.write('Param id : ' + paramId + '
'); res.end(); }); // Express 서버 시작 http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });Param password : ' + paramPassword + '
static은 serve-static이란 모듈을 다운받고, 그 안에 있는 미들웨어로써, 해당 패스에 대해 사용자(클라이언트)가 접근할 수 있도록 하는 설정 미들웨어임
Login.html이란 테스팅 파일을 만들어서 post로 submit하는 폼을 만들었다 가정할 때(그냥 특정 목표 지정없이 post로 submit만 되면 서버는 응답할 것임(기본 미들웨어에서)