【问题标题】:Route is working from Postman, but it is not working from client路线在邮递员处工作,但在客户处不工作
【发布时间】:2016-11-16 18:04:16
【问题描述】:

我正在尝试修复 400:错误请求错误。当我从 Postman see image 发出 PUT 请求时,我获得了 200 成功。但是,当我从浏览器尝试路由时,它给了我 400。

angular.js:11881 放置 http://localhost:8000/api/users/addStock/578430b65bd7a5dca37bf2e5 400 (错误请求)

错误:对象{数据:对象,状态:400,配置:对象,状态文本: “错误请求”}

股票.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);
    }
}

routes/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);
    })
  })
})

如果有人可以帮助我。我会非常感激。非常感谢。

【问题讨论】:

  • 服务器端有日志吗? response.data 中有什么内容?
  • 你能告诉我们邮递员发送的请求,包括标题吗?
  • @jchen86 在 res.data 中显示了随请求发送的正文和 400 代码。 see image
  • @Keerthivasan 这是来自邮递员的 200 的链接。 see image
  • symbol 只是一个字符串。看起来您应该在 $http 调用中使用 {symbol: symbol}

标签: angularjs node.js


【解决方案1】:

总结一下我上面的cmets...

symbol 只是一个字符串。看起来您应该在 $http 调用中使用带有“符号”键的对象,即

return $http.put(`/api/users/addStock/${id}`, {symbol: symbol});

此外,Angular 默认以application/json 发送数据,而您的邮递员示例似乎正在提交application/x-www-form-urlencoded。要处理任一类型的请求正文,您需要拥有

app.use(bodyParser.json());

如果你还没有。见https://expressjs.com/en/api.html#req.body

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2020-08-18
    • 1970-01-01
    • 2019-08-25
    • 2016-10-23
    • 1970-01-01
    • 2017-03-10
    • 2022-11-01
    • 1970-01-01
    相关资源
    最近更新 更多