// 서버 구축에 필요한 기능과 함수를 담고 있는 http모듈을 require 합니다
const http=require('http');
// createServer 함수 : Node.js 자바스크립트로 만든 http 서버가 실행되게 하는 함수입니다
// (req, res)=>{ } : 서버에 클라이언트가 요청이 있을때 실행할 명령들 또는 응답내용이 들어갑니다
// req를 이용하여 전달받은 요청을 res 를 이용하여 요청에 응답합니다.
const server1 = http.createServer( (req, res)=>{
res.write('<h1>Hellow Server By Nose Js</h1>');
res.write( '<h2>Wellcome to My Node Server!!</h2>' );
} );
// .listen( 8090, ()=>{} ) 에 있는 ()=>{} 는 서버가 시작되면 실행할 명령이 들어갑니다
// 8090 : 클라이어트가 요청할 포트번호
server1.listen( 8090, ()=>{ console.log('8090포트에서 서버가 대기중입니다.'); });
// http.createServer().listen();
-> http://localhost:8090/ 으로 접속하면 res에 담긴 내용을 확인가능
// 기타의 설정 에러의 내용
// create 서버 함수로 서버기능을 실행시킵니다. + 에러처리 구문도 추가합니다.
// createServer 함수로 만든 서버 객체를 server 변수에 저장하고 기타 설정은 server변수를 통해 별도로 실행합니다
const http = require('http');
const server = http.createServer( (req, res)=>{
res.write('<h1>Hello Node Server!!</h1>');
res.write('<h2>Here is My Second Server!!</h2>');
res.write('<h3>Wellcome to My Node Server!!</h3>');
} );
server.listen(8090);
server.on('listening', ()=>{ console.log('8090번 포트에서 서버 대기 중입니다!'); });
server.on('error', (error) => { console.error(error); } );
// 응답 내용의 마지막 전송 : res.end 실행후에는 더이상 응답내용이 전송될 수 없습니다.
const http = require('http');
http.createServer( (req,res)=>{
res.write('<h1>Hello Server by Nodejs #1</h1>');
res.end('<h1>Have a Nice day~!!</h1>');
// 응답 내용의 마지막 전송 : res.end 실행후에는 더이상 응답내용이 전송될 수 없습니다.
}).listen(8081, () => { // 포트번호와 함께 이벤트 리스너 설정
console.log('8081번 포트에서 서버 대기 중입니다!');
});
// req , res : 알고 있는 request, response 의 의미를 갖는 변수입니다
// 매개 변수이고, 서버에 있는 실제 request , response 객체가 전달됩니다
// 매개 변수는 그 객체를 전달받아 사용하는 것으로 변수의 아름은 자유롭게 변경이 가능합니다. 다만 함수 내에서 변경된 이름을 일관되게 사용해주는게 중요합니다
const http = require('http');
const fs = require('fs').promises;
http.createServer(async (req,res)=>{
try{
//promise 실행후 resolve에 파일의 내용이 전달되고, 함수안에서 그것을 꺼내쓰는 형태
// await가 필요하고, 현재 함수는 async 를 붙여줍니다
const data = await fs.readFile('./04_Server04.html');
// 헤더에 필요한 내용을 실어서 보내는 역할. 현재는 한글을 위한 속성이 담겨있습니다.
// 따라서 한글 인코딩을 위한 헤더 내용을 먼저 보내줍니다
res.writeHead( 200 , {'Content-Type':'text/html; charset=utf-8'} );
res.end(data);
}catch(error){
// promise 실행후 resolve 에 전달된값은 data가 받고, reject에 전달된값은 error 가 받습니다.
console.error(error);
res.writeHead( 500 , {'Content-Type': 'text/plain; charset=utf-8'});
res.end(error.message);
}
}).listen(8081, ()=>{ console.log('8081번 포트에서 서버 대기 중입니다!'); });
-> fs(promise객체를 품고 있음)가 04_Server04.html 파일의 내용을 data에 저장하고,
함수 이름 앞에 async를 붙이고 fs.readFile 앞에 await를 붙여서 필요할 때 꺼내쓸 수 있도록 함.
->res.writeHead --> 헤더에 들어갈 내용을 실어서 보냄
->promise 실행 후 resolve에 전달된 값은 data가 받고, reject에 전달된 값은 error가 받는다.
// http 상태 코드
// 2XX : 서버 전송 정상 완료.
// 3XX: 리다이렉션(다른 페이지로 이동)을 알리는 상태
// 4XX: 요청 오류를 나타냅니다. 요청 자체에 오류가 있을 때 표시됩니다
// 5XX: 서버 오류 - 요청은 제대로 왔지만 서버에 오류가 생겼을 때 발생합니다