【发布时间】:2020-04-04 01:19:24
【问题描述】:
我试图在 express 中创建一个 jwt auth api,一切正常,直到今天,当使用邮递员发出 post 请求时,只返回 {}
这里是 server.js 的代码
const express = require("express");
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const app = express();
const auth = require("./rutas/auth");
dotenv.config();
const port = process.env.PORT || 5000;
mongoose.connect(process.env.URI, {
useUnifiedTopology: true,
useNewUrlParser: true
});
app.use(express.json());
app.use("/api/auth", auth);
// app.use("/api/crud", crud);
app.listen(port, () => {
console.log(`Conectado en el puerto ${port}`);
});
这是 auth.js 的代码,其中 post 请求给了我{}
const express = require("express");
const { check, validationResult } = require("express-validator");
const router = express.Router();
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const User = require("../modelos/User");
router.get("/", async (req, res) => {
const usuarios = await User.find();
res.send(usuarios);
});
router.post("/sign", async (req, res) => {
const { nombre, email, contraseña } = req.body;
res.json(req.body);
console.log(req.body);
});
router.post("/login", [], async (req, res) => {
const { email, contraseña } = req.body;
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
try {
//Encontrar usuario en BD
const usuario = await User.findOne({ email });
const isValido = await bcrypt.compare(contraseña, usuario.contraseña);
if (isValido) {
const payload = {
id: usuario._id
};
const token = jwt.sign(payload, "secretomagico", { expiresIn: "1h" });
req.header("auth-token", token);
res.send("En BD");
}
} catch (error) {}
});
module.exports = router;
【问题讨论】:
-
您没有说返回的是哪个帖子路线 {}。您有两个发布路线,/sign 和 /login
-
这是邮寄路线
-
你有两条发布路线,一条在“/sign”下,一条在“/login”下;当您使用邮递员时,您输入的是“localhost:port/login”还是“localhost:port/sign”
-
是的,我使用了路线标志,已经发现邮递员的内容类型存在问题,谢谢
标签: javascript rest api express postman