AngularJS $ http发布到非现有网址404

时间:2016-08-09 14:24:14

标签: angularjs node.js

这可能是其中一个问题,不需要太多解释我只是没有在其他地方找到答案。

我是AngularJS和NodeJS的新手。我做了一些教程,现在我尝试把东西放在一起。

在nodeJS中,当我做这样的事情时:

app.get('/db-get-extra-bookings', function(req, res) {

    res.json({name: "hello"});

});

比AngularJS我可以GET即使/db-insert-extra-bookings 不是一个虚构的页面

,也可以对此做出回应
return $http
    .get(formURL)
    .then(function(response){

    // some code

    });

但是当我想从AngularJS发布一些东西到我的NodeJs环境时

return $http
    .post(formJson, JSON.stringify(bookings))
    .then(function(response){

        //some code

    });

的NodeJS:

app.get('/db-insert-extra-bookings', function(req, res) {

    // do something with the request

});

我的webbrowser控制台出现404错误。

base.js:5 POST http://localhost:3000/db-insert-extra-bookings 404 (Not Found)

这听起来像是正常的行为,但是当我404 error到非现有页面时为什么会得到POST,为什么我在GET时获得我想要的数据从一个不存在的页面?

我是否真的需要将空白页面发布到?

2 个答案:

答案 0 :(得分:-1)

我不是NodeJS的专家,但是如果你想创建一个回答任何HTTP方法的路线,你应该使用app.all()而不是app.get()。在您的代码中,您只是为GET个请求创建路由,这就是为什么它适用于GET而不适用于POST的原因。看看这个reference

答案 1 :(得分:-1)

为了澄清,NodeJS端点(包括GET)不需要提供HTML页面即可工作。您可以发送任何类型的HTTP响应,例如纯文本,JSON,HTML等 - 使用适当的'Content-Type'标题。

在NodeJS路线中:

app.post('/db-get-extra-bookings', function(req, res) {
    res.json({name: "hello"});
});

现在使用您的角度代码(您不需要JSON.stringify):

// Change localhost:9000 with your hostname
$http.post('http://localhost:9000/db-get-extra-bookings', bookings)
.success(function (data, status, headers, config) {
    // console.log(data);
})
.error(function (data, status, headers, config) {
    // console.log(status);            
});

,请记住重新启动NodeJS服务器以使更改生效。