2023.11.23(목)
아파치 웹 서버(Apache Web Server)
, GWS
, IIS
, Nginx
, …아파치 톰캣(Apache Tomcat)
, 레진(Resin)
, 제이런(JRun)
, …Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.
Code
index.js
let server = require('./server');
let router = require('./router');
let requestHandler = require('./requestHandler');
server.start(router.route, requestHandler.handle);
server.js
let http = require('http');
// let url = require('url'); // URL class is a global reference for require('url').URL
function start(route, handle){
function onRequest(request, response) {
// let pathname = url.parse(request.url).pathname; //url.parse is deprecated.
let pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
if (!request.url.includes('favicon.ico')) {
route(pathname, handle, response);
}
}
http.createServer(onRequest).listen(8888); // localhost:8888
}
exports.start = start;
The signature '(urlString: string): UrlWithStringQuery' of 'url.parse' is deprecated.
router.js
function route(pathname, handle, response) {
console.log('pathname :', pathname);
if (typeof handle[pathname] == 'function') {
handle[pathname](response);
} else { // 등록된 path가 아닌 경우
response.writeHead(404, {'Content-Type':'text/html'});
response.write('<h1>Page Not Found 😓</h1>');
response.end();
}
}
exports.route = route;
requestHandler.js
function main(response) {
response.writeHead(200, {'Content-Type':'text/html'});
response.write('<h1>Main page</h1>');
response.end();
}
function login(response) {
response.writeHead(200, {'Content-Type':'text/html'});
response.write('<h1>Login page</h1>');
response.end();
}
let handle = {};
handle['/'] = main;
handle['/login'] = login;
exports.handle = handle;
터미널에 node server.js
명령어로 서버 구동 시작
모듈화 🔗
require(src)
exports.key = value
주소창에 localhost:8888
을 입력해 서버에 접속
IP 주소(IP address) : 디바이스(컴퓨터, 태블릿, 핸드폰, …)를 가리키는 주소
용도가 정해져 있는 IP 주소
IP 주소 | 용도 |
---|---|
localhost, 127.0.0.1 | 현재 사용 중인 로컬 PC를 지칭 |
0.0.0.0, 255.255.255.255 | broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소 |
포트 번호(port number) : 디바이스의 특정 프로그램/앱으로 접속할 수 있는 채널 → 클라이언트와 서버가 통신하기 위해서는 무전기처럼 같은 주파수를 맞춰야 함
포트 번호 | 용도 |
---|---|
22 | Secure Shell (SSH) |
80 | Hypertext Transfer Protocol (HTTP) |
443 | Hypertext Transfer Protocol Secure (HTTPS) |
URL(Uniform Resource Locator)
Server와 Router의 역할
+) 요청 방식(method)과 상태 코드
![]() | ![]() |
---|