【问题标题】:POSTMAN API Request of (POST) is not working(POST) 的 POSTMAN API 请求不起作用
【发布时间】:2021-10-05 20:14:25
【问题描述】:

我是 node.js 的新手,遇到了一些错误。我正在尝试在 Postman 上发送一个 POST 请求,但它给了我空白,里面没有数据。我还检查了我的数据是否有效,然后我得到了,我发送的数据是有效的。谁能推荐我?

这是我的索引文件(index.js):

   const express = require("express");
   const app = express();
   const dotenv = require("dotenv");
   const mongoose = require("mongoose");

   //Import Routes
   const authRoute = require("./routes/auth");
   const postRoute = require("./routes/posts");

   dotenv.config();

   //connect to DB
   mongoose.connect(
     process.env.DB_CONNECT,
     { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true },
     () => console.log("connected to DB!!")
   );

   //Middleware
   app.use(express.json());
   //Route Middlewares
   app.use("/api/user", authRoute);
   app.use("/api/posts", postRoute);

   //PORT NUMBER
   const port = process.env.PORT || 8080; // default port to listen

   // start the Express server
   app.listen(port, () => {
     console.log(`server started at http://localhost:${port}`);
   });

这是我的身份验证文件(auth.js):

const router = require("express").Router();
const User = require("../model/User");
const jwt = require("jsonwebtoken");
const bcrypt = require("bcryptjs");
const { registerValidation, loginValidation } = require("../validation");

//REGISTER
router.post("/register", async (req, res) => {
  console.log("register");
  //Lets validate a data before we make a user
  const { error } = registerValidation(req.body);
  if (error) return res.status(400).send(error.details[0].message);

  //Checking if the user is already in the database
  const emailExist = await User.findOne({ email: req.body.email });
  if (emailExist) return res.status(400).send("Email Already Exists");

  //HASH THE PASSWORD
  const salt = await bcrypt.genSalt(10);
  const hashedPassword = await bcrypt.hash(req.body.password, salt);

  //Create a New User
  const user = new User({
    name: req.body.name,
    email: req.body.email,
    password: hashedPassword,
  });

  try {
    const savedUser = await user.save();
    res.send({ user: user._id });
  } catch (err) {
    res.status(400).send(err);
  }
});

//LOGIN
router.post("/login", async (req, res) => {
  //Lets validate a data before we make a user
  const { error } = loginValidation(req.body);
  if (error) return res.status(400).send(error.details[0].message);

  //Checking if the email exists in the database
  const user = await User.findOne({ email: req.body.email });
  if (!user) return res.status(400).send("Email is Not Found");

  //Check if password is correct
  const validPass = await bcrypt.compare(req.body.password, user.password);
  if (!validPass) return res.status(400).send("Invalid Password");

  //Create  and assign a Token
  const token = jwt.sign({ _id: user._id }, process.env.TOKEN_SECRET);
  res.header("auth-token", token).send(token);
});

module.exports = router;

如你所见:

我无法通过 POST 请求发送数据并获取它,DB 也已连接。

【问题讨论】:

    标签: node.js express authentication postman


    【解决方案1】:

    试试console.log(req.body)。 如果您的req.body 为空,则需要在中间件(index.js 文件)中添加一个包body-parser

    const bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({ extended: true }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      相关资源
      最近更新 更多