썸네일 with kkr & sjh
나에겐 추억이 하나 있지
응 request
와 말이야
리퀘스트 대.제.전. 비긴즈
아 이번엔 뭘 하나 더 달고 왔네 request.on
흫
if(pathname === '/create_process'){
var body = '';
request.on('data', function(data){ /
body += data;
});
request.on('end', function(){
var post = qs.parse(body); //qs이라는 모듈의 parse 함수를 이용해서 정보를 전환, 객체화 할 수 있다
var title = post.title;
var description = post.description;
fs.writeFile(`data/${title}`, description, 'utf8', function(err){
response.writeHead(302, {Location:`/?id=${title}`});
response.end();
});
});
}
모든 것은 이 코드로부터 시작되었다
정보를 받아서 파일로 저장하겠다
request.on('왜뭐', function(왜뭐) { })
node로 웹 브라우저 접속이 들어올 때마다 createServer
의 콜백함수(쩌어기 코드 맨위에 어딘가에 있음)를 node가 호출하는데, 콜백함수 안에는 request
와 response
2가지 인자가 있고,
웹이 post
방식으로 'data'를 전송할 때 그 양이 엄청 많은데, 한 번에 처리하게 되면 컴퓨터가 꺼지겠지?
노드에서 post
로 전송되는 데이터가 많을 때를 대비해서 request.on
을 제공하는데,
어떤 특정한 양, 100이라는 데이터를 조각조각의 양으로 server에서 수신할 때마다
server는 콜백함수(바디에 데이터 더하기)를 호출하도록 약속되어 있다.
그 콜백을 호출 할 때 'data'라는 인자를 통해서 수신한 정보를 주기로 약속함!
그러니까 'body'에다가 콜백이 실행될 때마다 'data'를 추가해주고 있는데
데이터가 조각조각 들어오다가 더 이상 정보가 없으면 request.on('end', function(){}
end 다음의 콜백함수를 호출하고, 'end'에 해당하는 콜백이 실행 됐을 때, 수신이 끝났다고 생각할 수 있다.
를 이용해서 웹 브라우저로부터 'post' 방식으로 전송된 데이터를 가져올 수 있고, qs.parse
즉 qs 모듈의 parse 함수를 통해서 정보를 전환할 수 있는데 이것이 "객체화" 이다.
var post = qs.parse('body')
=> {"title" : "왜", "desc" : "뭐" }
request.on
이 뭔데요? -> 이벤트
가 뭔데요? -> 핸들러
가 뭔데요?
뭔데요월드
에서 탄생한
한국사회 뤈타임
과 공부이벤트
// 그리고 메세지와 스트림은 다음에 생각해보기로 //
재밌는거 1
https://0oooceanhigh.medium.com/request-on-f060659cb36e
이상한거 1
https://en.wikipedia.org/wiki/Message
신기한거 1 https://ko.wikipedia.org/wiki/%EC%9D%B4%EB%B2%A4%ED%8A%B8_(%EC%BB%B4%ED%93%A8%ED%8C%85
저 논란의 코드는 bodyParser
의 등장으로 이렇게 변하게 되는데
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.post('/create_process', function(request, response){
const { body: { title, description } } = request;
fs.writeFile(`./data/${title}`, description, 'utf8', function(err){
response.writeHead(302, {Location: `/?id=${title}`});
response.end();
});
});
body
는 웹 브라우저쪽에서 요청한 본체이고, 그 본체를 설명하는 것이 헤더인데,
그 본체인 데이터를 parser 즉 분석해서 필요한 형태로 가공하는 것.
main.js
가 실행 될 때마다, 즉 사용자가 요청할 때마다, 이 코드에 의해서 만들어진 미들웨어가 실행되고,
미들웨어는 내부적으로 사용자가 전송한 post
데이터를 내부적으로 분석해서,
모든 데이터를 가져온 후에 엔드포인트에 해당하는 콜백을 호출하도록 되어 있다는 것.
콜백의 처음 인자인 request
에는 body라는 property가 없는데 만들어 줌. 누가? body parser가
즉, body parser라는 미들 웨어가 내부적으로 '/create_process' 라우터를 사용할 때 request
객체의 body property에 접근가능 하게 한다.