2016-12-11 15 views
0

がコンソールに表示ミスしているが見つからない、私はなぜHTTPアドレスには理解できない、nodejsサーバへの入力からデータを送るカントはAngularjs POSTは、ここ404

POST http://localhost:3000/api/message 404 (Not Found)    angular.min.js 
XHR finished loading: POST "http://localhost:3000/api/message".  angular.min.js 
Error "Cannot POST /api/message\n"         controllers.js 

私controllerjsが見つからない:

testControllers.controller('SecCtrl', ['$scope', '$http', 
    function SecCtrl($scope, $http) {  
     $scope.message = ''; 
     $scope.saveInput = function() {    
     $http({ 
      method: 'POST', 
      url: 'http://localhost:3000/api/message', 
      headers: {'Content-Type': 'application/json'}, 
      data: JSON.stringify({message: $scope.message})  
     }). 

     success(function(response) { 
      console.log("Success " + JSON.stringify(response)); 
     }). 

     error(function(response) { 
      console.log("Error " + JSON.stringify(response)); 
     }); 
    }; 
}]); 

server.jsコード、と私は、サーバーに入力されたデータを送信した後、私はマングースを使ってMongoDBのにそれを保存しよう:

var express = require('express'); 
var app = express(); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 

var Message = mongoose.model('Message', { 
    message: String 
}); 

mongoose.connect('mongodb://localhost:27017/test', function(err) { 
    if(!err) { 
     console.log('connected to mongo'); 
    } 
}); 

app.use(express.static(__dirname + '/public')); 
app.use(bodyParser.urlencoded({'extended':'true'})); 
app.use(bodyParser.json()); 
app.use(bodyParser.json({type: 'application/vnd.api+json'})); 

app.use(function(res,req,next) { 
    res.header("Access-Control-Allow-Origin"); 
    res.header("Access-Control-Allow-Headers", "Content-Type, Authorization"); 

    next(); 
}) 

app.get('api/message', function(req,res) { 
    Message.find(function(err,message) { 
     if(err) { 
      res.send(err); 
     } else { 
      res.json(message); 
     } 
    }) 
}) 

app.post('api/message', function(req,res) { 
    var message = new Message(req.body); 
    message.save(); 

    res.status(200); 
}) 

app.get('/', function(req,res) { 
    res.sendFile(__dirname + '/index.html'); 
}) 

app.listen(3000); 
console.log('listening on port 3000'); 

答えて

1

私はそれが絶対パス/api/messageであるべきだと思う:ここhttp://expressjs.com/en/api.html#path-examples

+0

app.post('/api/message', function(req,res) { var message = new Message(req.body); message.save(); res.status(200); }); 

ルックiは、コントローラで同じパスを書き込もうとしましたが、それはあなたがエラーを投稿することができ – daydreams

+0

同じ過ちの原因は? –

+0

彼らは同じです、私はトピックのbeginnigでそれらを掲示 – daydreams