-
[Node.JS 문법] HTTP모듈Node.js 2020. 7. 22. 00:04
Node J.S에서 HTTP 모듈을 사용하여 서버를 구축해 본다.
Hello world 띄우기
const http = require('http'); http.createServer((req, res) => { console.log('서버가 열렸습니다.'); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('<h1>Hello World!</h1>'); res.end(); }).listen(8080);
1. 동작 원리 설명
1) http모듈
Node의 내장 모듈인 'http'를 require 함수를 통하여 가져 와 const http에 저장한다.
모듈 안의 콜백함수인 createServer() 을 통해 request(요청) 와 response(응답)의 매개 변수를 이용해
출력을 해본다.
2) createServer() 함수와 콜백함수
createServer()는 웹 브라우저의 request(요청)가 오게 되면, 콜백 함수가 작동하게 된다.
콜백함수는 function 함수이름(생략가능) (req,res){ (내용) }의 형태로 표기 할 수 있고,
최신 문법에서는 화살표 함수라 불리며, 함수이름(생략가능) (매개변수) => { (내용) } 의 형태로
표현이 가능하다.
3) 콜백 함수에서의 response(응답) 사용
서버는 클라이언트의 req(요청)을 받게 되면 클라이언트에 res(응답)을 한다.
res.writeHead(상태코드, 헤더 내용) 이 오게 된다. head부분에 내용을 추가 하겠다고 보면된다.
상태코드에서 200은 잘 받았다는 성공의 의미라 보면 되고, 뒤의 내용은 html로 작성하고,
charset=utf-8을 적음으로써, 한글 사용을 하겠다는 의미이다.
res.write()는 body부분에 내용을 넣겠다는 소리이고 이로써 Hello World!를 출력할 수 있게 되었다.
4) listen() 매서드
서버의 매서드 중 포트 할당을 위해 listen(port, hostname, backlog, callback)매서드가 필요하다.
port는 포트의 번호이고, hostname은 듣고자하는 host의 ip주소이며,
backlog는 연결할 때 필요한 queue의 최대 크기라 보면 되고 default값은511이다.
callback은 listen함수가 작동하면 일어나는 콜백 함수이다.
2. 위의 코드와 html연동
res.writeHead, res.write를 통해 적어 내린다면 코드가 길어 지므로, html로 적은 코드를 바로 옮겨
볼 수 있도록 한다.
html 코드 (practice.html)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <h1>Hello World!</h1> </body> </html>
Node.JS 코드
const http = require('http'); const fs = require('fs'); http.createServer((req, res) => { console.log('서버가 열렸습니다.'); fs.readFile('./practice.html', (err, data) => { if (err) { throw err; } res.end(data); }); }).listen(8080);
fs모듈을 사용하여 html파일을 fs.readFile('./읽을 파일', 콜백함수)로 읽었다.
html파일을 읽은 뒤, data부분을 res.end(data)로 넣어주었다.