Node.js 내장 모듈은 HTTP 서버와 클리언트를 구성하는 함수를 제공한다.
보통 웹 서버를 구성할 때는 프레임워크를 사용하여 간단하고 빠르게 웹 애플리케이션을 만들 수 있다.
Node.js 코어 모듈만 활용하여 HTTP 요청/응답 통신이 어떻게 이루어지는지 살펴 보겠다. HTTP 요청/응답을 위해서는 HTTP 서버를 만들어야 한다.
Code
const http = require("http")
const hostname = "127.0.0.1"
const port = 3000
const server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader("Content-Type", "text/plain")
res.end("Hello Node.js HTTP Server")
})
server.listen(port, hostname, () => {
console.log(`Server is running at http://${hostname}:${port}/`)
})
Node.js http 모듈을 가져온다 (require(http))
서버를 생성하고자 하는 호스트 명 과 포트 번호를 지정
http.createServer 함수는 웹 서버 객체를 생성하여, 반환된 서버 객체를 통해 HTTP 요청을 받으면 request 와 response 객체가 전달되며, 저장된 작업을 수행한다.
response의 statusCode 속성에 요청에 대한 응답 상태 코드를 지정한다.
statusCode 란 http에서 HTTP 상태 코드를 의미하는 , 여기서 200 상태 코드는 서버가 요청을 정상적으로 처리했다는것을 의미하는 상태코드이다.
response 객체의 setHeader 함수에 헤더 정보를 지정한다. 이 헤더 정보를 통해 서버가 클라이언트 에 응답하는 자원 종류를 지정한다.
Content-Type는 클라이언트로 전될되는 자원의 타입을 말한다.
'text/plain 은 텍스트 파일을 의미
response 객체의 end 함수는 지정된 모든 응답 헤더와 본문이 전송됬었음을 서버에 알린다.
지정한 호스트, 포트 정보로 HTTP 서버를 실행하여 연결을 수신 받는다.
메세지를 통해 주고 받는 정보는 총 3개:
- 요청 또는 응답에 대한 상태 정보(ex.url,statusCode)
- HTTP 헤더(header),
- HTTP메세지 본문(body) 정보가 메시지를 담긴다.