Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- REST
- bubblesort
- 최대값 최소값
- a href="#" onclick="return false"
- resultType="hashmap"
- 전역객체
- 자바 예상문제
- git
- BCrypt
- map형태 jsp와 mapper
- git 명령어
- 유효성
- SQL
- 포워드 엔지니어링
- nodejs
- MariaDB
- ${}
- #{}
- it지원
- 알고리즘
- interface default
- gradle 설치
- cmd mariaDB
- container-fluid
- $('input [name=
- nodejs http
- git message
- 자바 로또
- templet
- $(document).on
Archives
- Today
- Total
Rubberduck-Debugging
nodeJS http 본문
1. HTTP 서버 구동
var http = require('http');
var server = http.createServer(function(req, res) {
res.end(‘Hello World’);
}).listen(3000);
2. HTTP 요청 (request)
-클라이언트 요청 분석
-var server = http.createServer(function(req, res){})
req.url : 요청 url, 경로와 쿼리 문자열
req.method : 요청 메소드
req.headers : 요청 메시지의 헤더
req(streamable) : 요청 메시지 바디
등의 요청 정보 파악
3. HTTP 요청 쿼리 문자열 문석
-url 모듈 사용
var url = require("url");
url.parse(req.url,true);
4. HTTP 요청에 대한 헤더 메시지 문석
var headers = req.headers;
headers.host
headers.content-type
headers.user-agent
5. 요청 데이터 콘솔 출력하기 (실습)
var server = http.createServer(function(req, res) {
console.log(‘HTTP Method : ' + req.method);
console.log(‘HTTP URL : ' + req.url);
console.log('== HEADERS ==');
console.log(req.headers);
res.end('Hello Node.js');
});
---------------------------------------------------------------
1. HTTP 응답 (response)
-응답 메시지
-상태 코드와 상태 메시지
-응답 메시지 헤더
-응답 메시지 바디
-메시지 상태
response.statusCode
response.statusMessage
-메시지 헤더
response.writeHead(statusCode[, statusMessage][, headers])
response.removeHeader(name)
response.getHeader(name)
response.setHeader(name, value)
-메시지 바디
response.end([data][, encoding][, callback])
response.write(chunk[, encoding][, callback])
2.HTTP 상태 코드 와 메시지
// 200 OK
response.statusCode = 200;
response.statusMessage = ‘OK’;
// 404 Error
response.statusCode = 404;
response.statusMessage = 'Not found';
3.응답(responae) 메시지
-응답 코드, 메시지 헤더 작성 함수 : writeHead
res.writeHead(200, { 'Content-Length': body.length, 'Content-Type': 'text/plain' });
-헤더 작성하기 : setHeader
res.setHeader("Content-Type", "text/html");
res.setHeader("Content-Length“, body.length);
4. 응답 데이터 바디
-response.write(chunk[, encoding][, callback])
-response.end()
실습_1
var http = require('http');
var server = http.createServer(function(req, res) {
console.log('Method : ', req.method);
console.log('url : ', req.url);
console.log('headers : ', req.headers['user-agent']);
res.write('Hello World');
res.end();
}).listen(3000);
실습_2 _ status code, message를 보내고 code를 작성해보자
var http = require('http');
var server = http.createServer(function(req, res) {
res.statusCode = 200;
res.statusMessage = 'OKOK';
res.setHeader('content-type','text/plain'); //설정에 따라 Client 화면 다르게 보인다
res.write('<html><body><h1>Hello World</h1></body></html>');
res.end();
}).listen(3000);
실습_3 _ 파일을 불러오자
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(req, res) {
fs.access('cat.jpg', function(err) {
if ( err ) {
res.statusCode = 404;
res.end();
return;
}
fs.readFile('cat.jpg', function(err, data) {
res.end(data);
});
});
}).listen(3333);
실습_4 _ 파라미터를 가져오자
var http = require('http');
var url = require('url');
var server = http.createServer(function(req, res) {
// URL 분석 : 쿼리 문자열
var parsed = url.parse(req.url, true);
var query = parsed.query;
// start와 end
var start = parseInt(query.start);
var end = parseInt(query.end);
if ( !start || !end ) {
res.statusCode = 404;
res.end('Wrong Parameter');
}
else {
// 합계 구하기
var result = 0;
for(var i = start ; i < end ; i++) {
result += i;
}
res.statusCode = 200;
res.end('Result : ' + result); // Result : 45
}
}).listen(3000);
---------------------------------------------
정적 파일 요청
-컨텐츠 타입
var server = http.createServer(function(req, res) {
if ( req.url == '/favicon.ico' ) {}
else if ( req.url == '/image.png' ) {
res.writeHeader(200, {‘Content-Type':'image/png'});
fs.read…
}
else if ( req.url == '/music.mp3' ) {
res.writeHead(200, {'Content-Type':'audio/mp3'});
fs.createReadStream…
}
else if ( req.url == '/movie.mp4' ) {
res.writeHead(200, {'Content-Type':'video/mp4'});
fs.createReadStream…
}
});
정적 파일 서비스
-요청 URL의 경로를 실제 파일 경로 매핑
myServier.com/resource/image.png -> ./resources/image.png
myServier.com/resource/audio.mp3 -> ./resources/audio.mp3
-요청 URL에서 경로 생성
var pathUtil = require('path');
var path = __dirname + pathUtil.sep + 'resources' + req.url;
----------------------------------------------------------------------------------------
실습 구성하기
1. html 작성
<html>
<link rel="stylesheet" type="text/css" href='public/style.css'>
<body>
<h1>Hello Kitty</h1>
<img src='image/cat.jpg'>
</body>
</html>
2. server 작성
var server = http.createServer(function (req, res) {
if ( req.url == '/favicon.ico') {
// 파비콘 응답
}
else if ( req.url == '/' ) {
// 기본 페이지 : index.html
fs.createReadStream('./public/index.html').pipe(res);
}
else {
var path = __dirname + req.url;
}
)}
'개발자 > 20181127 교육과정' 카테고리의 다른 글
nodeJS express (0) | 2019.01.08 |
---|---|
nodeJS get, post , 실습 (0) | 2019.01.07 |
nodeJs npm module (0) | 2019.01.07 |
nodeJS npm (0) | 2019.01.07 |
nodeJS 비동기식, 파일 다루기 (0) | 2019.01.07 |