요청과 응답 서버 만들기
서버에서 요청을 받고 응답을 어떻게 하는지 알아보겠습니다! 다음은 서버의 간단한 요청과 응답의 예시입니다
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write('<h1>Hello Node!</h1>');
res.end('<p>Hello Server!</p>');
})
.listen(8080, () => { // 서버 연결
console.log('8080번 포트에서 서버 대기 중입니다!');
});
터미널에서 "node 파일명" 명령어를 입력하면 서버가 실행되고 웹에서 "http://localhost:8080" 에 접속하면 위와 같은 결과를 볼 수 있습니다! http 서버가 있어야 웹 브라우저의 요청을 처리할 수 있으므로 http 모듈을 사용합니다.
createServer() - 요청받고 응답할 수 있는 http.Server 개체를 만듭니다. req는 request를 의미하며 요청에 관한 정보를 담고 있고, res는 respond를 의미하며 응답에 관한 정보를 담고 있습니다.
res.writeHead(상태코드, 헤더 정보) - 응답 헤더에 대한 정보를 기록하는 메서드입니다. 상태 코드는 HTTP 상태코드를 말하는데 200, 404, 500 등 이다. 'text/html' 은 응답의 콘텐츠 형식이 HTML 이라는 의미이고, 'utf-8' 은 한글 표시를 하라는 의미이다.
res.write() - 본문(body)에 보여지는 부분을 쓰는 메서드이다.
res.end() - 응답을 종료하는 메서드이다.
.listen(포트번호, 콜백함수) - 서버와 연결할 포트 번호를 지정하고, 포트 연결 완료 후 실행된 콜백함수를 입력하면 된다.
경로 지정하기
const http = require('http');
http.createServer((req, res) => {
try {
if (req.method === 'GET') {
if (req.url === '/') { // http://localhost:8080/
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write('<h1>Hello Node!</h1>')
res.end('<p>this is node page</p>');
} else if (req.url === '/view') { // http://localhost:8080/view
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write('<h1>Hello View!</h1>')
res.end('<p>this is view page</p>');
}
}
// 경로가 / or /view 가 아닌 경우
res.writeHead(404);
res.end('NOT FOUND');
} catch (err) {
console.error(err);
res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end(err.message);
}
})
.listen(8080, () => {
console.log('8080번 포트에서 서버 대기 중입니다');
});
url의 경로를 만들어서 경로에 따라 웹 페이지가 다르게 동작하게 할 수도 있습니다. req.method는 요청 방식을 말하며 GET, POST 등이 있습니다. req.url 을 통해 경로에 따라 다른 페이지를 만들어낼 수 있습니다.
'Back-end > Node.js' 카테고리의 다른 글
[Node.js] Express 프로젝트 생성하기 (0) | 2021.07.11 |
---|---|
[Node.js] 쿠키와 세션 (Cookie and Session) (0) | 2021.07.10 |
[Node.js] 파일 시스템 모듈(fs), 이벤트 (0) | 2021.07.09 |
[Node.js] 노드 내장 모듈 알아보기 (0) | 2021.07.07 |
[Node.js] 노드 내장 객체 알아보기 (0) | 2021.07.07 |