node.js - axios POST 表达 api 给 Request failed
问题描述
我正在尝试使用 axios 从我的 React 本机应用程序中发布一个帖子。这是我写的 express api 的帖子。我尝试发送的数据是正确的,但我不断收到 400 错误请求失败。
我的带有 axios 请求的 React Native 代码是这样的:
postToDatabase = async() => {
console.log(this.state);
API.post('/restaurants', {
name: this.state.name,
description: this.state.description,
places_free: this.state.places_free,
latitude: this.state.latitude,
longitude: this.state.longitude,
phone: this.state.phone,
website: this.state.website
})
.then(res => console.log(res))
.catch(err => console.log(err));
}
特快专递是这样的:
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(cors());
app.post('/api/restaurants', (req, res, next) => {
var errors = [];
if(!req.query.name){
errors.push("No name specified");
}
if(!req.query.description){
errors.push("No description specified");
}
if(!req.query.places_free){
errors.push("No description specified");
}
if(!req.query.latitude){
errors.push("No latitude specified");
}
if(!req.query.longitude){
errors.push("No longitude specified");
}
if(!req.query.phone){
errors.push("No phone specified");
}
if(!req.query.website){
errors.push("No website specified");
}
if(errors.length){
res.status(400).json({"error": errors.join(',')});
return;
}
var data = {
name: req.body.name,
description: req.body.description,
places_free: req.body.places_free,
latitude: req.body.latitude,
longitude: req.body.longitude,
phone: req.body.phone,
website: req.body.website
}
var sql = "INSERT INTO restaurants (name, description, places_free, latitude, longitude, phone, website) VALUES (?, ?, ?, ?, ?, ?, ?)";
var params = [data.name, data.description, data.places_free, data.latitude, data.longitude, data.phone, data.website];
db.run(sql, params, (err, result) => {
if(err){
res.status(400).json({"error": err.message});
return;
} else {
res.json({
"status" : "succes",
"data": data
});
}
});
});
我希望有人能看到我哪里弄错了。
解决方案
可能还有其他错误,但我发现的错误是您req.query
在应该使用req.body
.
req.query
用于查询参数,例如/api/example?foo=bar
,而req.body
用于请求正文
推荐阅读
- c# - 使用来自 dll 的参数获取 nunit (2.5.10) TestCases
- python - Python 2 根据阈值删除最旧的目录
- perl - Perl 意外行为:croak 与 try catch
- python-3.x - 在python中添加唯一值以重复列表值
- docker - Docker-compose 文件两次构建相同的图像
- android - 具有包装内容行为的 androidx Recycler View 匹配约束(0dp)
- javascript - 如何使用自定义cordova插件将在android布局中创建的HERE映射片段显示到html div
- r - 如何对行子集执行线性回归并将趋势和相关值存储在 R 中的另一个数据框中
- java - 将嵌套的 for 循环逻辑转换为 for each 和 java 流
- kubernetes - 主节点环境centos7.9中的kubeadm init错误