'use strict' | |
consthttp=require('http') | |
constmaxContentSize=3500 | |
constisPostMethod=(req)=>{ | |
returnreq.method==='post' | |
} | |
constgetPostData=(req,res)=>{ | |
letdata='' | |
req.on('data',(chunk)=>{ | |
// res.setEncoding('utf8') | |
console.log('server: data event: '+chunk.toString()) | |
data+=chunk | |
}) | |
req.on('end',()=>{ | |
console.log('[server] end') | |
console.log(data) | |
res.writeHead(200,{'Content-Type': 'text/plain'}) | |
res.end('finished') | |
}) | |
} | |
// req: incoming | |
// res: serverresponse | |
constcheckContentLength=(req)=>{ | |
// reqest headerのcontent-lengthによってレスポンスを変える | |
constlength=parseInt(req.headers['content-length']) | |
console.log(`length: ${length}`) | |
if(!length){ | |
returnfalse | |
}elseif(length<=maxContentSize){ | |
returntrue | |
}else{ | |
returnfalse | |
} | |
} | |
constserver=http.createServer((req,res)=>{ | |
if(!isPostMethod(req)){ | |
res.writeHead(400,'bad request') | |
} | |
letisContinue=checkContentLength(req) | |
if(isContinue){ | |
getPostData(req,res) | |
}else{ | |
res.writeHead(400,'bad request') | |
} | |
console.log('[server] response event') | |
}) | |
/* | |
* http.Server events | |
* req: IncomingMessage | |
* res: ServerResponse | |
*/ | |
server.on('checkContinue',(req,res)=>{ | |
if(!isPostMethod(req)){ | |
res.writeHead(400,'bad request') | |
} | |
letisContinue=checkContentLength(req) | |
if(isContinue){ | |
res.writeContinue() | |
getPostData(req,res) | |
}else{ | |
res.writeHead(400,'bad request') | |
} | |
console.log('[server] checkContinue events') | |
}) | |
// listen | |
server.listen(8080) | |
server.on('close',()=>{ | |
console.log('[server] close event') | |
}) | |
console.log(`listening on 3000`) |
YeahYeah
SpaceApps is a NASA incubator innovation program.