我需要從我的 React 前端接收一個 JSON。但是JSON以一種奇怪的方式出現在我面前(一個帶有字串資料的物件),我不知道如何再次將它回傳到型別物件。
我送這個。
const data = {
email: '[email protected]',
password: 'test'
}
const options = {
method: 'POST',
body: JSON.stringify(data),
mode: 'no-cors',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
const onsubmit = (e) => {
//evitamos que se haga la peticion en automatico
e.preventDefault();
fetch('http://localhost:3001/user/signin',options)
.then(res => res.json())
.catch(error => console.error('Error:', error))
.then(response => console.log('Success:', response));
console.log('send on submit');
}
我在快速服務器上得到了這個:
[Object: null prototype] {
'{"email":"[email protected]","password":"test"}': ''
}
我的服務器是這樣配置的:
const express = require('express');
const app = express();
const morgan = require('morgan');
const cors = require('cors');
const {mongoose} = require('./src/database/connection')
const Parser = require("body-parser").urlencoded({ extended: false });
//config
app.set('port', process.env.PORT || 3001);
//middlewares
app.use(morgan('dev'));
app.use(Parser);
app.use(cors()); //accepts connection from all directions
//Routes
app.use(require('./src/test'));
app.use(require('./src/routes/users'));
//Server
app.listen(app.get('port'), (req, res) => {
console.log(`Server on port ${app.get('port')}`);
})
我想我錯誤地配置了 body-parser,請幫忙,這是我的第一個 API。
uj5u.com熱心網友回復:
'Content-Type': 'application/x-www-form-urlencoded'
如果您告訴服務器您正在發送表單編碼資料,那么它會嘗試決議您作為表單編碼資料發送的內容。
不要說謊。
如果您要發送 JSON,請這樣說:
'Content-Type': 'application/json'
const Parser = require("body-parser").urlencoded({ extended: false });
您還需要一個支持 JSON 的正文決議器。
const Parser = require("body-parser").json();
但是 Express 有一個內置的主體決議器,并且以大寫字母開頭的變數名傳統上是為建構式/類保留的。
const parser = express.json();
在旁邊:
mode: 'no-cors'
如果您要發出跨域請求,那么這將破壞它。如果您正在提出同源請求,那么這將無濟于事。
去掉它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387663.html
標籤:javascript 节点.js 反应 休息 表达
