일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- toString
- https://velog.io/@velopert/create-typescript-react-component
- object
- 출처 : https://webdir.tistory.com/506
- 게시판
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- Today
- Total
Back Ground
Node - 요청과 응답 [http모듈 웹 서버] 본문
요청과 응답 이해하기
클라이언트로부터 요청이 왔을 때 어떤 작업을 수행할지 이벤트 리스너를 미리 등록해두어야 한다.
이벤트 리스너를 가진 노드 서버를 만들어 보자.
createServer.js
1 2 3 4 5 | const http = require('http'); http.createServer((req,res)=> { //여기에 어떻게 응답할지 적어준다. }); | cs |
http서버가 있어야 웹 브라우저의 요청을 처리 할 수 있으므로 http모듈을 사용했다.
http모듈에는 createServer메서드가 있다.
인자로 요청에 대한 콜백 함수를 넣을 수 있다.
요청이 들어올 때마다 매번 콜백 함수 실행된다.
따라서 이 콜백 함수에 응답을 적어주면 된다.
createServer의 콜백 부분을 보면 req와 res 매개변수가 있다.
request |
req |
response |
res |
다음 예제는 응답을 보내는 부분과 서버 연결 부분 추가해 보겠다.
server1.js
1 2 3 4 5 6 7 8 | const http = require('http'); http.createServer( (req,res) => { res.write('<h1>Hello Node!</h1>'); res.end('<p>Hello Server!</p>'); }).listen(8080, () => { console.log('8080번 포트에서 서버 대기 중입니다.'); }); | cs |
createServer 메서드 뒤에 listen메서드를 붙이고 클라이언트에게
공개할 포트 번호와 포트 연결 완료 후 실행될 콜백 함수를 넣어준다.
이제 이 파일을 실행하면 서버는 8080포트에서 요청이 오기를 대기한다.
listen메서드에 콜백 함수를 넣는 대신,
다음과 같이 서버에 listening 이벤트 리스너를 붙여도 된다.
추가로 error이벤트 리스너도 붙여보았다.
server1-0.js
1 2 3 4 5 6 7 8 9 10 11 | const http = require('http'); const server = http.createServer( (req,res) => { 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)}); | cs |
res 객체에는 res.write와 res.end 메서드가 있다.
res.write의 첫 번째 인자는 클라이언트로 보낼 데이터
(지금은 HTML 모양의 문자열을 보냈지만 버퍼를 보낼 수도 있다. 또한 여러 번 호출해서 데이터를 여러 개 보내도 된다.)
res.end는 응답을 종료하는 메서드이다.
만약 인자가 있다면 그 데이터도 클라이언트로 보내고 응답을 종료한다.
HTML파일 불러오기
server2.html
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Node.JS 웹 서버</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <h1>Node.js 웹 서버</h1> <p>만들 준비되셧나요?</p> </body> </html> | cs |
server2.js
1 2 3 4 5 6 7 8 9 10 11 12 13 | const http = require('http'); const fs = require('fs'); http.createServer( (req,res) => { fs.readFile('./server2.html', (err,data) => { if(err){ throw err; } res.end(data); }); }).listen(8081,() => { console.log('8081번 포트에서 서버 대기 중'); }); | cs |
fs모듈로 HTML파일을 읽는다.
data변수에 저장된 버퍼를 그대로 클라이언트에 보내주면 된다.
'Javascript > Node.js' 카테고리의 다른 글
Node - Rest API [http모듈 웹 서버] (0) | 2019.02.24 |
---|---|
Node - 쿠키와 세션 [http모듈 웹 서버] (2) | 2019.02.23 |
Node - Node 기능 (0) | 2019.02.15 |
Callback Hell 이란 [ 해결방법 ] (2) | 2019.01.23 |
NodeJS - ES2015+ (0) | 2019.01.18 |