2022. 9. 13. 13:53ㆍNode.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 |