Node02 - GET、POST数据解析

本文详细介绍了HTTP协议中GET请求的数据解析方法,包括手动解析、使用querystring模块和url模块进行解析;同时介绍了POST请求的大数据接收方式及其解析方法。

1、GET数据解析方法

   (01)、手动剪切  => 实例1   

          const http=require('http');
          http.createServer(function(req, res){
            var GET={};
            if (req.url.indexOf('?')!=-1){
              var arr=req.url.split('?');
              //arr[0] => 地址 /abc
              //arr[1] => 数据 user=bule&pass=1234
              var arr2=arr[1].split('&');
              for(var i=0; i<arr2.length; i++){
                var arr3 = arr2[i].split('=');
                //arr3[0] => 用户名 blue
                //arr3[1] => password 1234
                GET[arr3[0]]=arr3[i];
              }
            }else{
              var url=req.url;
            }
            // console.log(GET);
            res.write(GET.toString());
            res.end();
          }).listen(8080);

   (02)、利用 querystring(查询字符串) 解析 (该方法会把一个 URL 查询字符串 str 解析成一个键值对的集合。)

           querystring.parse(str[, sep[, eq[, options]]]

            str (string)    需要解析的 URL 查询的字符串

            sep (string)  用于界定查询字符串中的键值对的子字符串。默认为 ‘ & ’

            eq (string)   用于界定查询字符串中的键与值得子字符串。默认为 ‘ = ’          

            options <Object>
                  decodeURIComponent <Function> 解码查询字符串的字符时使用的函数。默认为 querystring.unescape()。
                  maxKeys <number> 指定要解析的键的最大数量。默认为 1000。指定为 0 则不限制。

            例如:quertstr = querystring.parse('name=bule&pass=1234&age=18');  

               控制台输出内容:{ name: 'bule', pass: '1234', age: '18' }

          *注释:querystring.parse 方法依然不是很特别方便,还有第三种方法。

   (03)、利用 url 解析

          url.parse(urlString[, parseQueryString[, slashesDenoteHost]])

              urlString <string> 要解析的 URL 字符串。
              parseQueryString <boolean> 如果为 true,则 query 属性总会通过 querystring 模块的 parse() 方法生成一个对象。 如果为 false,则返回的 URL 对象上的 query 属性会是一个未解析、未解码的字符串。 默认为 false。
              slashesDenoteHost <boolean> 如果为 true,则 // 之后至下一个 / 之前的字符串会被解析作为 host。 例如,//foo/bar 会被解析为 {host: 'foo', pathname: '/bar'} 而不是 {pathname: '//foo/bar'}。 默认为 false。
              url.parse() 方法会解析一个 URL 字符串并返回一个 URL 对象。

              如果urlString不是字符串将会抛出TypeError。

              如果auth属性存在但无法编码则抛出URIError。

          例如:urlLib.parse('https://www.baidu.com/index?name=bule&pass=1234&age=18',true);

                返回数据格式  =>      

                  Url {
                    protocol: 'https:', //获取及设置URL的协议(protocol)部分
                    slashes: true,
                    auth: null,
                    host: 'www.baidu.com', //获取及设置URL的主机(host)部分,
                                //*注=如果给host属性设置的值是无效值,那么该值将被忽略。
                    port: null,
                    hostname: 'www.baidu.com',
                    hash: null,
                    search: '?name=bule&pass=1234&age=18',   //获取及设置URL的序列化查询(query)部分部分。
                    query: 'name=bule&pass=1234&age=18',      //query 属性是不含开头 ASCII 问号(?)的查询字符串,或一个被

                                          //querystring 模块的 parse() 方法返回的对象。 query 属性是一个字符

                                          //串还是一个对象是由传入 url.parse() 的 parseQueryString 参数决定的。
                                          //例如:'query=string' or {'query': 'string'}
                    pathname: '/index', //地址
                    path: '/index?name=bule&pass=1234&age=18',
                    href: 'https://www.baidu.com/index?name=bule&pass=1234&age=18'
                   }

                   *注释:urlLib.parse(".....", true);加 true => query格式改变为obj格式

                      query: { name: 'bule', pass: '1234', age: '18' },

2、POST数据接收:POST数据比GET打得多

  (01)、 POST数据很大,所以需要分段接收

       实例: 

        //POST--req
        var str = '';//接收数据
        req.on("data",function(data){ //正在接收数据
        //每次迭代数据,数据有可能很大,会分很多段迭代
          str+=data;
        });
        req.on('end',function(){ //数据接收完成
        //通过解析querystring解析
        var POST = queryString.parse(str);
          console.log(POST);

          //输出格式=>  { user: 'bule', pass: '1234' }
        });

  

  

 

 

 

   

  

转载于:https://www.cnblogs.com/patriot/p/7991909.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值