宝哥软件园

详解节点 射流研究…如何处理邮政数据

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

实现思路

将数据和目标事件的回调函数直接放在服务器中,在数据事件回调中收集所有的邮政数据,当接收到所有数据,触发目标事件后,其回调函数调用请求路由,并将数据传递给它,然后,请求路由再将该数据传递给请求处理程序。

实现步骤

第一步我们设置了接收数据的编码格式为UTF-8,第二步注册了"数据"事件的监听器,用于收集每次接收到的新数据块,并将其赋值给postData变量,最后第三步我们将请求路由的调用移到目标事件处理程序中,以确保它只会当所有数据接收完毕后才触发,并且只触发一次。我们同时还把邮政数据传递给请求路由

示例代码

index.js

var server=require(' ./server’);var router=require(' ./router’);var requestHandlers=require(' ./RequestHandlers’);var handle={ } handle['/']=请求处理程序。开始;handle['/start ']=RequestHandlers。开始;handle['/upload ']=RequestHandlers。上传;server.start(router.route,handle);server.js

var http=require(' http ');var URL=必选(' URL ');函数start(route,handle){ request上的函数(request,response){ var post data=' ';var pathname=URL。解析(请求。网址).路径名;控制台。日志('收到对路径名的请求');请求。setencoding(' utf8 ');request.addListener('data ',function(PostDataChunk){ PostData=PostDataChunk;控制台。日志('接收的开机自检数据块''开机自检数据块' '。');});request.addListener('end ',function() { route(句柄,路径名,响应,发布数据);});//路由(句柄、路径名、响应);//response.writeHead(200,{ ' Content-Type ' : ' text/plain ' });//response.write('这是一个演示');//响应。end();} http.createServer(onRequest).听(5656,' 127 .0 .0 .1 ');控制台。日志('服务器已启动localhost :5656’);} exports.start=startrouter.js

函数路线(句柄、路径名、响应、postData){ console.log('即将为路径名路由请求);if(句柄[路径名]==' function '){句柄[路径名](响应,发布数据);} else { console。日志('路径名'找不到请求处理程序);response.writeHead(404,{ ' Content-Type ' : ' text/plain ' });response.write('404未找到');回应。end();} } exports . route=Routerequesthandlers . js

//var查询字符串=require('查询字符串');函数启动(响应,后置数据){ console.log('请求处理程序开始被调用。');var body=' html ' ' head ' ' meta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 '/' '/head ' ' body ' '表单操作='/upload '方法=' post ' ' '文本区域名称=' text '行=' 20 '列=' 60 '/文本区域' '输入类型='提交'值='提交文本'/' '/表单' '/正文' '/html ';response.writeHead(200,{ ' Content-Type ' : ' text/html ' });response.write(正文);回应。end();}函数上传(响应,postData) { console.log('请求处理程序“上传”被调用,');response.writeHead(200,{ ' Content-Type ' : ' text/plain ' });response.write('您已经发送了: '发布数据);回应。end();} exports . start=startexports . upload=上传;运行:节点mynode/index

浏览器输入http://localhost:5656/

结果:

在文本框里输入"我爱你"点击提交

使用查询字符串模块只提取文本,修改一下requestHandlers.js使只返回文本

var查询字符串=require('查询字符串');函数启动(响应,后置数据){ console.log('请求处理程序开始被调用。');var body=' html ' ' head ' ' meta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 '/' '/head ' ' body ' '表单操作='/upload '方法=' post ' ' '文本区域名称=' text '行=' 20 '列=' 60 '/文本区域' '输入类型='提交'值='提交文本'/' '/表单' '/正文' '/html ';response.writeHead(200,{ ' Content-Type ' : ' text/html ' });response.write(正文);回应。end();}函数上传(响应,postData) { console.log('请求处理程序“上传”被调用,');response.writeHead(200,{ ' Content-Type ' : ' text/plain ' });response.write('您已经发送了“:”查询字符串。解析(发布数据).文本);回应。end();} exports . start=startexports . upload=上传;重新启动,依旧输入我爱你,提交

总结

以上就是这篇文章的全部内容了,希望这篇文章的内容对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

更多资讯
游戏推荐
更多+