whatisthis?

Node JS - Request와 Response (createServer 메소드) 본문

WEB STUDY/PHYTHON | BACK-END

Node JS - Request와 Response (createServer 메소드)

thisisyjin 2022. 2. 18. 12:32
 

Node. Node JS 서버 생성하기

우선 server.js 파일을 만들고, 아래 코드를 작성함. server.js const http = require('http'); // 서버를 만드는 모듈 불러옴 // http 모듈 내의 createServer 메소드 http.createServer((request, response) =>..

mywebproject.tistory.com

지난 포스팅에서 server.js를 생성 후

cmd창에서 node server.js까지 진행했었다.

 

 

server.js

const http = require('http'); // 서버를 만드는 모듈 불러옴

// http 모듈 내의 createServer 메소드
http.createServer((request, response) => { // 서버 만드는 createServer 메소드
  console.log('server start!');
}).listen(8080);  // 8080포트에 연결(listen)

 

server.js에서 http모듈의 createServer 메소드의 인자로 콜백이 들어갔는데,

콜백의 매개변수로 사용request와 response에 대해 알아보자!

 

 

 

request요청을 담당합니다. 즉 서버로 보내는 요청에 대한 정보가 들어있습니다.

방금 우리가 주소창에 localhost:8080 이라고 친 행위도 서버에 그 주소에 해당하는 정보를 달라고 요청한 겁니다.

서버는 항상 대기중이다가 request가 들어올 때 반응하면 됩니다.

그리고 request에 대한 처리를 한 후 결과를 response 객체로 돌려주는 겁니다.

 

response는 이제 클라이언트(브라우저)로 돌려줄 응답을 담당합니다.

만약 어떤 정보를 보내고 싶다면 response 객체를 활용하면 됩니다.

지금까지 브라우저에 아무것도 안 뜬 이유는 response를 설정하지 않았기 때문입니다. (localhost:8080 했을 때)

response가 없다면 브라우저에는 아무 것도 전달되지 않습니다.

response는 대부분 페이지를 보내지만, 꼭 페이지만을 보낼 필요는 없습니다.

JSON, AJAX나 이미지같은 것도 모두 '정보'입니다.

 

❗❗ request -> 서버 처리 -> response로 이어지는 흐름을 기억하세요.

 

 

한 가지 더 알아둘 점은 request와 response에는 header과 body가 있습니다.

header는 request, response에 대한 정보(종류, 크기, 캐시 여부 등등)가 들어있고,

body는 진짜 주고받고자 하는 내용이 들어있습니다.

🔻

F12(개발자도구)를 누르고 Network 탭에 가면 request와 response의 헤더 내용을 볼 수 있음.

 

 


server.js(수정)

const http = require('http');
http.createServer((request, response) => {
  return request
    .on('error', (err) => { // 요청에 에러가 있으면
      console.error(err);
    })
    .on('data', (data) => { // 요청에 데이터가 있으면
      console.log(data);
    })
    .on('end', () => { // 요청의 데이터가 모두 받아졌으면
      response.on('error', (err) => { // 응답에 에러가 있으면
        console.error(err);
      });
      response.statusCode = 200; // 성공 상태 코드
       response.setHeader('Content-Type', 'text/plain'); // header 설정
      response.write('hi\n'); // body에 정보 탑재
      response.end('the end!'); // 정보 탑재 후 브라우저로 전송
    });
}).listen(8080);

return request를 해주고

.on('error')과

.on('data')와

.on('end')의 경우에 해당하는 콜백을 추가해주었다.

request.on('error', 콜백) 요청에 에러가 있으면
request.on('data', 콜백) 요청에 데이터가 있으면
request.on('end', 콜백) 요청의 데이터가 모두 받아졌으면
> response.on('error')시에는 에러 안내해야함.

 

response.statusCode에는 상태코드를 대입한다. (200 = 성공)

 

 

HTTP 상태 코드 - 위키백과, 우리 모두의 백과사전

아래는 HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태 코드의 목록이다. IANA가 현재 공식 HTTP 상태 코드 레지스트리를 관리하고 있다. 모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분된다. 상태 코

ko.wikipedia.org

🔺 상태코드에 대한 정보는 위키피디아를 참조하자.

 

❕ HTTP 상태 코드 (status Code)

1xx 조건부 응답
2xx 성공
3xx 리다이렉션 완료
4xx 요청 오류
5xx 서버 오류
  • 1xx (정보): 요청을 받았으며 프로세스를 계속한다
  • 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
  • 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
  • 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
  • 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다

 

 


response.setHeader('key', 'value') // 헤더 설정

response.write(내용) // body에 해당하는 정보 탑재

response.end(문구) // 정보 탑재 후 브라우저로 전송

+) 만약 html을 전송하려면? text/html

 


 

 

(NodeJS) 서버 만들기

안녕하세요! 이번 시간에는 서버를 만들어보겠습니다! 서버를 직접 만든다니 새롭지 않나요? 다른 서버들은 서버를 다운로드받은 후 설정... 설정... 설정... 끝에야 돌릴 수 있잖아요. Node.js는 코

www.zerocho.com

 

zerocho님의 교재와 포스팅을 참고하여 작성한 공부 아카이빙용 글입니다.

자세한 내용은 위 블로그를 참조하세요.