【发布时间】:2021-10-23 10:47:43
【问题描述】:
working post request on postman
在 Postman 的上方,我正在发送相同的 json 类型的正文请求,它在 Postman 中运行良好,并将用户 ID 作为响应发送回。
但是当我尝试使用 fetch request.body 发送相同的请求时,会变成 undefined。
这是我的前端获取请求。
fetch('http://localhost:3000/api/user/register', {
method: 'post',
mode: 'no-cors', // no-cors, *cors, same-origin
body: formJSON,
headers: {
'Content-Type': 'application/json',
},
})
.then(function (response) {
return response.text()
})
.then(function (text) {
console.log(text)
})
.catch(function (error) {
console.error(error)
})
这是我的后端代码
const router = require('express').Router()
const User = require('../model/User')
const jwt = require('jsonwebtoken')
const bcrypt = require('bcryptjs')
const { registerValidation, loginValidation } = require('../validation')
const { request } = require('express')
router.post('/register', async (req, res) => {
console.log(request.body)
//validating
const { error } = registerValidation(req.body)
if (error) return res.status(400).send(error.details[0].message)
//check if email already exist
const emailExist = await User.findOne({ email: req.body.email })
if (emailExist) return res.status(400).send('Email is taken')
//hashing password
const salt = await bcrypt.genSalt(10)
const hashedPassword = await bcrypt.hash(req.body.password, salt)
//create 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)
}
})
【问题讨论】:
-
什么是
formJSON?它是 JSON 字符串还是 JavaScript 对象?此外,如果您想实际与响应数据进行交互,看起来您不应该使用mode: "no-cors"。由于您也控制后端,因此只需应用 cors middleware
标签: node.js express post fetch postman