使用邮递员测试 api。但请求正在返回用户名或电子邮件无效
Posted
技术标签:
【中文标题】使用邮递员测试 api。但请求正在返回用户名或电子邮件无效【英文标题】:Testing api using postman. But request is returning user name or email is invalid 【发布时间】:2021-10-10 21:32:02 【问题描述】:我从我的 nodejs 后端服务器创建了一个用户登录路由,我想测试 api,但它返回给我一个错误,尽管这是我输入的错误,以防代码无法按预期工作。但是我一遍又一遍地交叉检查代码,我似乎无法从代码中指出哪里有问题。请通过查看代码来帮助您可能做错了什么,这就是原因。
**userRouter path**
userRouter.post('/signin', expressAsyncHandler(async (req, res) =>
const user = await User.findOne( email: req.body.email );
if(user)
if(bcrypt.compareSync(req.body.password, user.password))
res.send(
_id: user._id,
name: user.name,
email: user.email,
isAdmin: user.isAdmin,
token: generateToken(user),
);
return;
res.status(401).send( message: 'Invalid email or password verification' );
))
export default userRouter;
**User model path**
import mongoose from 'mongoose';
const userSchema = new mongoose.Schema(
name: type: String, required: true ,
email: type: String, required: true ,
password: type: String, required: true ,
isAdmin: type: Boolean, default: false, required: true ,
,
timestamps: true
);
const User = mongoose.model("User", userSchema);
export default User;
**server.js path...**
import express from 'express';
import mongoose from 'mongoose';
import dotenv from 'dotenv';
import productRouter from './routers/productRouter.js';
import userRouter from './routers/userRouter.js';
dotenv.config()
const app = express();
app.use(express.json());
app.use(express.urlencoded( extended: true ));
mongoose.connect(process.env.MONGODB_URL || 'mongodb://localhost/e-commerce',
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
);
app.use('/api/users', userRouter);
app.use('/api/products', productRouter);
app.get('/', (req, res) =>
res.send('Node server is Serve here');
);
const port = process.env.PORT || 5000;
app.use((err, req, res, next) =>
res.status(500).send( message: err.message );
);
app.listen(5000, () =>
console.log(`serve at http://localhost/$port`)
);
**utils.js for generating jsonwebtoken**
export const generateToken= (user) =>
return jwt.signin(
_id: user._id,
name: user.name,
email: user.email,
isAdmin: user.isAdmin,
, process.env.JWT_SECRET,
expiresIn: '30d',
);
【问题讨论】:
【参考方案1】:在 Express 中, res.send() 用于字符串和缓冲区对象。要发送 json 数据,您需要使用其他东西:
而不是res.send(jsondata)
使用res.json(jsondata)
文档:https://www.geeksforgeeks.org/express-js-res-json-function/
【讨论】:
我试试你的方法,但还是这样... "message": "jwt is not defined" 添加 import jwt from 'jsonwebtoken' @Ahmad Salihu 你还有问题吗?以上是关于使用邮递员测试 api。但请求正在返回用户名或电子邮件无效的主要内容,如果未能解决你的问题,请参考以下文章
尽管在邮递员中工作,但请求 JSON 在 JMeter 中给出错误
android 改造后注销请求给出错误 406 不可接受:用户未登录。...在邮递员 api 上工作正常