NodeJs获取get和post提交的数据

爱被打了一巴掌 2022-12-13 11:19 400阅读 0赞

Get和Post的区别

1.Get使用URL或Cookie传参。而Post将数据放在body中。
2.Get的URL的长度会有长度上的限制, Post的数据则可以非常大。
3.Get没有Post安全,因为数据在地址栏上可见。
采取Get方法获取:
在这里插入图片描述

第一种方法获取数据

那么问题来了!!我们如何在url地址中获取用户提交的表单数据呢???
nodejs中的url模块就给我们提供了一种办法:
url.parse()方法可以解析url地址,将字符串地址转换为对象类型。

  1. const url = require('url');
  2. //url.parse() 解析url地址
  3. let strUrl = 'http://www.baidu.com/abc?flag=123&keyword=node';
  4. // parse() 将字符串 转换为对象
  5. let result = url.parse(strUrl);
  6. console.log(result);

在这里插入图片描述
我们可以看到通过该结果是一个对象类型的形式呈现出来的,这样一看,要想获得我们所需要的内容就很简单了

  1. console.log(result.query);

在这里插入图片描述
如果是想获取flag和keyword的值,只需改变一下下就可以了

  1. const url = require('url');
  2. //url.parse() 解析url地址
  3. let strUrl = 'http://www.baidu.com/abc?flag=123&keyword=node';
  4. // parse() 将字符串 转换为对象
  5. let result = url.parse(strUrl,true);
  6. // console.log(result);
  7. // console.log(result.query);
  8. console.log(result.query.flag);
  9. console.log(result.query.keyword);

在这里插入图片描述

true在这里的作用就是json对象中的query也转换为对象类型。

上面例子中的网址是固定的,如果想要变换的,只需换成req.url(获取请求的地址)即可


那我们怎么把对象类型转换为字符串类型呢?url模块也给我们提供了一种方法:url.format()方法将对象类型转换为字符串类型

  1. const url = require('url');
  2. let obj = {
  3. protocol: 'http:',
  4. slashes: true,
  5. auth: null,
  6. host: 'www.baidu.com',
  7. port: null,
  8. hostname: 'www.baidu.com',
  9. hash: null,
  10. search: '?flag=123&keyword=node',
  11. query: 'flag=123&keyword=node',
  12. pathname: '/abc',
  13. path: '/abc?flag=123&keyword=node',
  14. href: 'http://www.baidu.com/abc?flag=123&keyword=node'
  15. }
  16. let str = url.format(obj);
  17. console.log(str);

在这里插入图片描述

第二种方法获取数据

第二种方法就是上面提到的req.url方法

  1. const http = require('http');
  2. const url = require('url');
  3. http.createServer((req,res)=>{
  4. res.end(req.url);
  5. }).listen(3000,()=>{
  6. console.log('running....')
  7. })

然后我们在浏览器中验证一下,现在浏览器的端口后添加url地址
在这里插入图片描述
发现最后把端口后面的url地址全部返回了
获取数据

  1. const http = require('http');
  2. const url = require('url');
  3. http.createServer((req,res)=>{
  4. // res.end(req.url);///abc?id=123&password=123
  5. let obj = url.parse(req.url,true);
  6. res.end(obj.query.id+'====='+obj.query.password);
  7. }).listen(3000,()=>{
  8. console.log('running....')
  9. })

在这里插入图片描述

此处我们获取数据的时候,不能直接obj.query,因为它可能是一个Buffer对象,浏览器页面不能直接解析,所以需要直接获取id和password

发表评论

表情:
评论列表 (有 0 条评论,400人围观)

还没有评论,来说两句吧...

相关阅读

    相关 GetPOST提交区别

    前言 最近在复习J2EE的一些基础知识,在看到web客户端提交方式区别,发现之前忽视的一部分重点在这里总结记录一下。 常规区别(大部分人知道的区别) 对于web开