NodeJS学习笔记之Node中的数据交互

Posted vidvan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJS学习笔记之Node中的数据交互相关的知识,希望对你有一定的参考价值。

一、GET请求

  1. 获取数据;
  2. 数据放在url中进行传输;
  3. 容量小:<32K;

思路:

  • 创建html表单,前端提交信息给服务端(url?username=xxx&password=xxx);
  • 引入url模块,通过url.parse(request.url, true)获取json数据。

demo1.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>演示1</title>
    </head>
    <body>
        <form action="http://localhost:8088/login" method="GET">
            用户名:<input type="text" name="username"><br>
            密  码:<input type="password" name="password"><br>
            <input type="submit" value="提交">
        </form>
    </body>
</html>

index.js:

let http = require(\'http\')
let url = require(\'url\')

http.createServer((req, res) => {
    let { pathname, query } = url.parse(req.url, true)
    console.log(pathname, query);
}).listen(8088)

运行命令:

 node index

打开页面,在表单输入数据,输出结果:

/login[Object: null prototype] { username: \'admin\', password: \'123456\' }

二、POST请求

  1. 数据放在body中进行传输;
  2. 容量大:<2G;

思路:引入querystring模块,创建数组获取buffer多段数据并用concat拼接,querystring.parse(data)获取json。

demo1.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>演示1</title>
    </head>
    <body>
        <form action="http://localhost:8088/login" method="POST">
            用户名:<input type="text" name="username"><br>
            密  码:<input type="password" name="password"><br>
            <input type="submit" value="提交">
        </form>
    </body>
</html>

index.js:

let http = require(\'http\')
let querystring = require(\'querystring\')

http.createServer((req, res) => {
    let result = [];

    //Node.js中定义了Buffer类,专门用来存放二进制数据的缓存区
    req.on(\'data\', (buffer) => {
        result.push(buffer);
    })

    req.on(\'end\', () => {
        // 由于是成段获取,所以要拼接起来
        let data = Buffer.concat(result).toString() // 这种不能用于图片视频等文件
        console.log(querystring.parse(data))
    })

}).listen(8088)

运行命令:

 node index

打开页面,在表单输入数据,输出结果:

[Object: null prototype] { username: \'admin\', password: \'123456\' }

以上是关于NodeJS学习笔记之Node中的数据交互的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs学习笔记--- 与MongoDB的交互(mongodb/node-mongodb-native)MongoDB入门

NodeJS学习笔记之Node的模块

系列文章--Node.js学习笔记系列

node.js学习笔记二之版本问题

TypeScript学习笔记之基础类型

Nodejs学习笔记-----Buffer