一、原生node中怎么获取get/post请求参数

处理get请求参数,使用node自带的核心模块----url模块

url.parse();方法将一个完整的URL地址,分为很多部分,常用的有:host、port、pathname、path、query。
第一个参数是地址,
第二个参数默认是false,设置为ture后,将字符串格式转换为对象格式。字符串(“a=1&b=2”)转换为了对象格式({a: 1,b: 2})。

var url = require("url");
//req.url='/users?a=1&b=2'
var urlObj = url.parse("/users?a=1&b=2" ,true);
console.log(urlObj );//{a:1,b:2}

处理post请求参数
要想获得post参数对象,需要用到第三方包querystring

req.body = querystring.parse(str); // querystring.parse是将字符串转成对象{a:1,b:2}

二、express框架中获取请求的参数方法

获取get请求的参数值(req.query)
由nodejs默认提供,无需载入中间件,
此方法多适用于GET请求,解析GET请求中的参数
包含在路由中每个查询字符串参数属性的对象,如果没有则为{}

//访问127.0.0.1/user?name=zd&age=18
console.log(req.query);//{name:zs,age:18}

获取url路径(req.params)

nodejs默认提供,无需载入其他中间件

req.params包含路由参数(在URL的路径部分),而req.query包含URL的查询参数(在URL的?后的参数)。

app.get("/user/:id", function (req, res) {
	//访问127.0.0.1/user/3
  console.log(req.params);//{id:3}
});

获取post请求的参数值(req.body)
req.body不是nodejs默认提供的,需要载入中间件body-parser中间件才可以使用req.body。
express已集成了body-parser,可以直接引入,如果没有请自行下载引入

demo:

const express = require("express");
const app = express();
//const crypto = require("crypto");//加解密
//const hash = crypto.createHash("md5");
const bodyParser = require("body-parser");//body参数解析

app.use(bodyParser.urlencoded({ extended: false })); //parse application/x-www-form-urlencoded
app.use(bodyParser.json()); //parse application/json
// app.use(bodyParser()); //此方法废弃,由上面两个替代

app.get("/", function (req, res) {
  console.log(req.query);
  res.send("helloworld");
});

app.get("/user/:id", function (req, res) {
  console.log(req.params);//{id:xx}
  res.send("helloworld");
});

app.post("/user", function (req, res) {
  console.log(req.body);
  // 处理逻辑。。。查询sql
  res.send({ name: "yang", age: 18 });
});

app.listen(80, function () {
  console.log("express is running");
});

一般情况下,以下几个重要的模块是需要与 express 框架一起安装的:

  • body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

  • cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

  • multer - node.js 中间件,用于处理 enctype=“multipart/form-data”(设置表单的MIME编码)的表单数据。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐