我正在尝试修复400:错误请求错误。当我从Postman see image提出PUT请求时,我获得了200的成功。但是,当我从浏览器尝试路由时,它给了我400.
angular.js:11881 PUT http://localhost:8000/api/users/addStock/578430b65bd7a5dca37bf2e5 400 (错误请求)
错误:对象{data:对象,状态:400,config:对象,statusText: "错误请求"}
stock.html
<form ng-submit='addStock()'>
<input type="text" ng-model='addObj.symbol' placeholder="symbol" required>
<button class="btn btn-success">Add</button>
</form>
controller.js
app.controller('stockCtrl', function($scope,User){
$scope.addStock = () => {
let userId = '578430b65bd7a5dca37bf2e5';
User.addStock(userId, $scope.addObj.symbol)
.then(res => {
console.log("res.data: ", res.data);
})
.catch(err => {
console.log("err: ", err);
})
}
service.js
app.service('User', function($http) {
this.addStock = (id, symbol) => {
return $http.put(`/api/users/addStock/${id}`, symbol);
}
}
路由/ API / users.js
router.put('/addStock/:userId',(req,res)=>{
User.findById(req.params.userId, (err, user)=>{
if(err || !user) return res.status(400).send(err || {error: 'user not found'});
let stock = {
symbol : req.body.symbol
}
user.stocks.push(stock);
user.save((err, savedStock)=>{
res.status(err ? 400 : 200).send(err || savedStock);
})
})
})
如果有人可以帮助我。我会非常感激的。非常感谢你。
答案 0 :(得分:1)
总结我上面的评论......
symbol
只是一个字符串。看起来您应该在$http
调用中使用带有“符号”键的对象,即
return $http.put(`/api/users/addStock/${id}`, {symbol: symbol});
此外,Angular默认将数据发送为application/json
,而邮递员示例似乎正在提交application/x-www-form-urlencoded
。要处理任何类型的请求正文,您需要
app.use(bodyParser.json());