Node之处理Get与Post请求

本文详细介绍了如何在Node.js中处理GET和POST请求,包括使用url和querystring模块解析GET和POST数据,以及如何通过form表单和AJAX实现注册与登录功能。通过实例代码展示了处理请求的过程,并探讨了GET与POST请求的区别。
摘要由CSDN通过智能技术生成

1. 关键知识点简介

  • GET请求用url模块的parse方法解析request.url获取参数
  • POST请求用request.on监听数据的接收,因为post数据是多段分发的,不像GET请求直接发送一段字符串,post数据是异步接收的,我们必须等到post数据接收完成之后再进行处理。

2. 本文最终的目录结构

windows、linux如何自动生成目录结构:点击查看

│  get.js                          ----------- 处理get请求
│  index.js                        ----------- 用户注册登录验证案例
│  post.js                         ----------- 处理post请求
│  postGet.js                      ----------- 同时处理get和post请求
│  staticServer.js                 ----------- 静态服务器模块
│  
├─public                           ----------- 存放mime.json
│      mime.json
│       
└─static                           ----------- 静态文件根目录
        form.html                  ----------- form表单:用户注册(POST方式)
        form1.html                 ----------- form表单:用户登录(GET方式)
        postGet.html               ----------  form表单(GET和POST数据同时发送)
        index.css
        index.html                 ----------- 用户登录注册首页(ajax发送)
        index.js
        jquery-3.1.1.min.js
        post.html                  ----------- post.js所需的表单

这里不会讲解node静态服务器的搭建,如果想学习请看我上一篇文章:Node之搭建静态服务器

3. 处理GET请求

新建一个get.js文件:

const http = require('http');
const url = require('url');

http.createServer( (req, res) => {
   

  if(req.url === '/favicon.ico') {
   
    res.end();
    return
  }

  console.log("req.url === > ", req.url);

  // get 数据处理
  console.log(url.parse(req.url))
  
  let {
   query:{
   a, b} } = url.parse(req.url, true);
  console.log("a === ", a);
  console.log("b === ", b);
  
  res.end("{code: 0}");     

}).listen(8080, ()=>{
   
  console.log('running...');
})

node get启动服务器,在网页访问 http://localhost:8080/?a=1&b=2 ,服务端打印结果如下:
在这里插入图片描述
可以看到,request.url是查询字符串,而url.parse(request.url)将查询字符串转换成对象的形式,最后我们想要的是对象里边的query属性,因此我们用ES6的对象解构语法将参数a和参数b给解构出来。不熟悉ES6请看:ES6学习地址
因此,get数据的处理就是通过url模块的parse方法,将字符串转换成对象,再通过query属性拿到参数

4. 处理POST请求

新建一个post.js文件:

const http = require('http');
const querystring = require('querystring');

http.createServer( (req, res) => {
   

  if(req.url === '/favicon.ico') {
   
    res.end();
    return
  }

  console.log("req.url === > ", req.url);

  // post 数据处理
  let str = '';
  req.on('data', chunk => {
   

    str += chunk  //数据拼接

  })

  req.on('end', () => {
   

    console.log("post数据接收完毕");
    let {
   a, b} = querystring.parse(str);

    console.log('a====>',a);
    console.log('b====>',b);
  })
  
  res.end("{code: 0}");     

}).listen(8080, ()=>{
   
  console.log('running...');
})

static文件夹下,新建一个post.html文件,用来模拟post数据发送:

<!--body内容-->
<form method="POST
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值