| '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.