4장 http 모듈로 서버 만들기

2022. 9. 13. 13:53Node.js

4.1 요청과 응답 이해하기

클라이언트에서 서버로 (request)요청을 보내고 ,서버에서는 요청을 읽고 처리한 뒤 클라이언트에 응답(response)을 보낸다.

 

서버만들기

더보기
const http = require('http')

http.createServer((req,res)=>{
 여기에 응답할지 적는다. 
});

응답하는 부분이 없어  코드를 실행해도 아무일도 일어나지 않는다.

 

요청 부분 추가

더보기

파일명 server1.js

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 server1이라 치면

8080번 포트에서 서버 대기 중입니다! 라고 터미널에 입력이되고

 

주소창에 자신의 로컬호스트 아이피적어도 똑같이 뜬다.

listen 부분은 포트번호를 가르켜주는곳 같다.

 

서버라는 객체에 넣어서 요청과 응답

더보기
const http = require('http');

const server = 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>');
});
server.listen(8080);

server.on('listening',()=>{
    console.log('8080 포트에서 서버 대기중입니다!');

});
server.on('error',(error)=>{
    console.error(error);
});

 

 

한번에 여러 서버를 실행

createSever를 원하는 만큼 호출

더보기
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 Server1</p>');

})
.listen(8080,() =>{
    console.log('8080번 포트에서 서버 대기 중입니다!');
});
http.createServer((req,res)=>
{
    res.writeHead(200,{'Content-Type' : 'text/html; charset=utf-8'});
    res.write('<h1> Hello Node!</h1>');
    res.end('<p>Hello Server2</p>');

})
.listen(8081,() =>{
    console.log('8081번 포트에서 서버 대기 중입니다!');
});

 

이런식으로 포트번호만 바꾸면 내가 원하는 서버에 접근이 가능!!

 

요번에는 HTML파일은 만들어서 fs 모듈로 읽어서 전송하는것을 해보자 

더보기

 위에는 코드블럭

const http = require('http');
const fs = require('fs').promises;

http.createServer(async(req,res) => {
    try{
        const data = await fs.readFile('./server2.html');
        res.writeHead(200,{'Content-Type' : 'text/html; charset=utf-8'});
        res.end(data);

    }catch(err){
        console.error(err);
        res.writeHead(500,{'Content-Type' : 'text/html, charset = utf-8'});
        res.end(err.message);
    }
})
.listen(8081,()=> {
    console.log('8081번 포트에서 서버 대기 중입니다!');
});

전과 다르게 헤더만 설정해주고 html 파일을 읽어서 서버에 나타내어 줄것이다

 

아래는 Html로 서버를 나타내는것

<!DOCTYPE html>
<html>
<head>
    <meta charset = "utf-8" />
    <title>Node.js 웹 서버</title>
</head>
<body>
    <h1>Node.js 웹 서버</h1>
    <p>만들 준비되셨나요?</p>
</body>
</html>

 

html로 만든게 나타내어진다

4.2  REST와 라우팅 사용하기

 

REST : 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 가르킨다.

 

 

  • Get : 서버자원을 가져오고자 할때 사용함.
  • Post : 서버에 자원을 새로 등록하고자 할 때 사용함.
  • Put : 서버의 자원을 요청에 들어 있는 자원으로 치환하고자 할때 사용함.
  • Patch : 서버 자원을 일부만 수정하고할때 사용함.
  • Delete : 서버의 자원을 삭제할때 사용함.
  • Options : 요청을 하기 전에 통신옵션을 설명하기 위해 사용함.

복잡해지면 Post를 쓰자.

Http 통신을 사용하면 클라이언트가 누구든 상관없이 같은 방식으로 서버와 소통할수 있다.

서버와 클라이언트를 분리하면 추후에 서버를 확장할 때 클라이언트에 구애되지 않아 좋다.

주소와 메서드만 보고 요청의 내용을 알아볼수 있다.

Get 메서드 같은경우에는 브라우저에서 캐싱할 수도 있으므로 같은 주소로 GET 요청을 할 때 서버에서 가져오는것이 아니라 캐시에서 가져올 수도 있습니다.( url주소로 읽어와서 사용할수 있다는 뜻인거같다.)

 

4.3 쿠키와세션 이해하기

 

쿠키

쿠키는 유효기간이 있으며 name=zerocho와 같이 단순한 '키-값'의 쌍입니다.

쿠키는 요청의 헤더에 담겨 전송됩니다.

'Node.js' 카테고리의 다른 글

Sql과 NoSQL (비관계형 DB)  (0) 2022.09.30
3장 노드의 기능 알아보기  (0) 2022.09.14