req.query和req.body的区别

共同点:两者皆是属于node.js获取参数的方法
区别点:
req.query用来获取get方法传递的参数
req.body用来获取post方法传递的参数,req.body需要借助第三方插件body-parser来配置
配置body-parser插件:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
//传递头信息application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended:false}))
//传递头信息
app.use(bodyParser.json());

案例:

const express = require("express");
const path = require("path");
const bodyParser = require("body-parser");
const app = express();
//配置静态文件路径
app.use(express.static(path.join(__dirname, "public")));
app.use(bodyParser.urlencoded({ extended: false }));
app.get("/get", (req, res) => {
  res.send(req.query);
  console.log(req.query);
  console.log(req.body)//输出为空
});
app.post("/post", (req, res) => {
  res.send(req.body);
  console.log(req.body);
  console.log(req.query)//输出为空
});
app.listen(3000);
console.log("服务器启动成功");

前端代码:

 const btn = document.querySelector("#btn");
      const username = document.querySelector("#username");
      const age = document.querySelector("#age");

      btn.onclick = function () {
        const xhr = new XMLHttpRequest();
        let nameValue = username.value;
        let ageValue = age.value;
        //拼接请求参数
        let params = "username=" + nameValue + "&age=" + ageValue;
        xhr.open("post", "http://localhost:3000/post");
        xhr.setRequestHeader(
          "Content-Type",
          "application/x-www-form-urlencoded"
        );
        xhr.send(params);
        xhr.onload = function () {
          console.log(JSON.parse(xhr.responseText));
        };
      };

你可能感兴趣的:(node.js)