美文网首页Node.js
Node.js进阶之【2】 : 解析客户端GET方式传过

Node.js进阶之【2】 : 解析客户端GET方式传过

作者: 岚平果 | 来源:发表于2020-03-17 17:25 被阅读0次

备注:客户端通过GET发送数据给服务端,数据大小需【<32k】,而通过POST传送数据给服务器,限制数据大小在【1G】以内

一、【手动解析】解析客户端发送到服务器的数据

    1. 新建一个文件夹【get】,在这个文件夹新建一个【index.html】,一个本地服务器【server.js】
      【index.html】里写一个【表单GET提交】
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    // action后面的内容表示表单要提交到哪,method表示表单要以什么方式提交,我们这节以get方式提交数据到服务器
    <form action="http://localhost:8082/aaa" method="get">
        <p>姓名:<input type="text" name="name"></p>
        <p>密码:<input type="password"  name="pass"></p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>
    1. 【server.js】里新建一个本地服务器,手动拆分数据获得客户端返回来的数据
const http = require('http');
var server = http.createServer((req, res) => {
    if(req.url !== '/favicon.ico') {
        let str = req.url.substring(req.url.indexOf('?') + 1);      // name=xxw&pass=1234567
        let arr = str.split('&');                                   // [ 'name=xxw', 'pass=1234567' ]
        let obj = {};
        arr.forEach(ele => {
            let arr2 = [];                                          // [ 'name', 'xxw' ][ 'pass', '1234567' ]
            arr2 = ele.split('=');
            obj[arr2[0]] = arr2[1]
        })
        console.log(obj)                                            // { name: 'xxw', pass: '1234567' }
    }
    res.end();
})
server.listen(8082)
    1. 启动服务器【node server.js】,并且表单内容进行填入


      image.png
    1. 上面表单点击提交之后,我们会看到服务器终端会输出经过我们手动转化的【客户端发送给服务器的数据 obj 】


      image.png

二、【querystring.parse】解析客户端发送到服务器的数据

    1. 新建【querystring.js】文件,引入【querystring】模块,【querystring.parse('url')】把一个类似【name=xxl&age=12&sex=girl】转化成一个【对象】
const querystring = require('querystring')
let obj = querystring.parse('name=xxl&age=12&sex=girl')
console.log(obj)
    1. 启动服务器 【node querystring.js】


      image.png
      image.png

三、【url.parse】解析客户端发送到服务器的数据

    1. 新建一个【urlLib.js】文件,引入【url】模块,【url.parse】把网址类似【http://localhost:8082/aaa?name=xxk&pass=123456】转化成一个对象【url】
      const urlLib = require('url');
      // 第二个参数为ture,可以解析出我们要的数据。
// urlLib.parse第二个参数为true,可以把query直接解析成对象 { name: 'xxk', pass: '123456' }
var obj = urlLib.parse('http://localhost:8082/aaa?name=xxk&pass=123456', true)
console.log(obj)
} 
var url = obj.pathname;
var data = obj.query;
console.log(url, data)  //     /aaa     { name: 'xxk', pass: '123456' }
    1. 解析明细:


      image.png
    1. 应用举例:


      image.png

相关文章

网友评论

    本文标题:Node.js进阶之【2】 : 解析客户端GET方式传过

    本文链接:https://www.haomeiwen.com/subject/fortyhtx.html