whatisthis?
Node JS - Request와 Response (createServer 메소드) 본문
Node JS - Request와 Response (createServer 메소드)
thisisyjin 2022. 2. 18. 12:32지난 포스팅에서 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 상태 코드 (status Code)
1xx | 조건부 응답 |
2xx | 성공 |
3xx | 리다이렉션 완료 |
4xx | 요청 오류 |
5xx | 서버 오류 |
- 1xx (정보): 요청을 받았으며 프로세스를 계속한다
- 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
- 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
- 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
- 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
response.setHeader('key', 'value') // 헤더 설정response.write(내용) // body에 해당하는 정보 탑재
response.end(문구) // 정보 탑재 후 브라우저로 전송
+) 만약 html을 전송하려면? text/html
zerocho님의 교재와 포스팅을 참고하여 작성한 공부 아카이빙용 글입니다.
자세한 내용은 위 블로그를 참조하세요.
'WEB STUDY > PHYTHON | BACK-END' 카테고리의 다른 글
Node. Node JS 서버 생성하기 (0) | 2022.02.18 |
---|---|
Node. Node Js + NPM 이란? (0) | 2022.02.18 |
JAVA. 혼자 공부하는 자바 Day 01 (0) | 2021.09.23 |
Phython. 파이썬 코딩 기초편-10(下) (0) | 2021.09.21 |
Phython. 파이썬 코딩 기초편-10(上) (0) | 2021.09.20 |