
요청과 응답
클라이언트가 서버로 요청을 보냅니다
서버는 요청을 처리하고 클라이언트로 응답을 보냅니다.
여기서 요청(request)은 req로, 응답(response)은 res로 쓰는 경우가 많습니다.

HTTP 서버 만들기
서버 생성
server.js라는 파일을 생성합니다.
require을 사용하여 http를 받아옵니다.
const http = require('http');
createServer을 사용하여 웹 서버 객체를 만듭니다.
http.createServer((req, res) => {
// 작업은 여기서 진행 됩니다...
})
createServer은 첫째 인자로 req요청, 두 번째 인자로 res응답을 받습니다.
포트 정하기
HTTP 요청을 처리하려면 listen 메서드가 server객체에 호출되어야 합니다.
server.listen(port, hostname, backlog, callback);
다음 구조를 가질 수 있는데, 대부분 블로그 글에서는 listen안에 port만 작성 하는 경우가 많아 보인다.
저는 listen에 8080 포트를 작성하고 콜백 함수에 log를 작성하여 서버가 잘 열어졌는지 확인해보려 한다.
const http = require('http')
http.createServer((req, res) => {
// 작업은 여기서 진행 됩니다...
}).listen(8080, () => {
console.log('8080번 포트에서 서버 대기중입니다.')
})
간단한 HTTP 작성
creatServer에 '작업은 여기서 진행됩니다...'부분에 간단한 http를 작성해 보려고 합니다.
write와 end를 사용하여 응답을 전송합니다.
const http = require('http')
http.createServer((req, res) => {
res.write(`<h1>hello Server</h1>`)
res.write('<p>hello World</p>')
res.end('<p>hello Node</p>')
// res.end('<h1>hello Server</h1><p>hello World</p><p>hello Node</p>') ->같은 결과를 보여줍니다.
}).listen(8080, () => {
console.log('8080번 포트에서 서버 대기중입니다.')
})
locallhost:8080 접속
터미널에 해당 파일을 실행합니다.
저는 server1이라는 파일이었기 때문에 node server1.js로 실행했습니다.
터미널에 8080번 포트에서 서버 대기 중입니다.라는 이전에 적용한 log가 정상적으로 보입니다.
http://localhost:8080/ 다음으로 접속하면 화면이 정상적으로 출력됩니다.

만약 js파일에서 수정이 있었을 경우 ctrl+C를 눌러 서버를 껐다가 다시 node server.js로 실행해 줘야 합니다.
예외 처리
HTTP로 서버를 여는 것 또한 비동기이기 때문에 예외 처리를 진행해줘야 한다
http, createServer을 server라는 변수에 넣고 server.on을 사용하여 서버가 켜지는 정상적으로 작동되는 경우 그렇지 않은 경우를 나눠서 진행해준다.
const http = require('http')
const server = http.createServer((req, res) => {
res.write(`<h1>hello Server</h1>`)
res.write('<p>hello World</p>')
res.end('<p>hello Node</p>')
}).listen(8080)
server.on('listening',()=>{
// 서버 정상 실행
console.log('8080번 포트에서 서버 대기중입니다.')
})
server.on('error',(err)=>{
// error 발생
console.log(err)
})
listen에 있던 콜백을 정상적으로 작동된 경우에 넘겨서 조금 더 정확하게 파악을 할 수 있게 만들었다.
참고
'백엔드 > node' 카테고리의 다른 글
| [Node.js/MongoDB] Html파일 전송하기 (0) | 2022.12.14 |
|---|---|
| [Node.js/MongoDB] nodemon (0) | 2022.12.14 |
| [Node.js/MongoDB] Express와 get으로 읽기 (0) | 2022.12.14 |
| [Node.js/MongoDB] Node.j란 (1) | 2022.12.14 |
| [Node] fs로 HTML 읽기 (0) | 2022.11.27 |