2016-08-18 4 views
2

TodoAppのREST APIをAngularにして、ADD、UPDATE、GET ALLの経路を設定しますが、DELETEメソッドは使えません。 マイ角度コントローラ:適切に経路指定できないAngular

angular.module('todoListApp') 
.controller('todoCtrl', function($scope, Todo) { 
    $scope.deleteTodo = function(todo, index) { 
    $scope.todos.splice(index, 1); 
    todo.$delete(); 
    console.log("<<" + todo.name + ">> deleted."); 
}; 

角度サービス:

angular.module('todoListApp') 
.factory('Todo', function($resource){ 
    return $resource('/todos/', {id: '@id'}, { 
    update: { 
     method: 'PUT' 
    }, 
    save: { 
     method: 'POST' 
    }, 
    delete: { 
     method: 'DELETE', 
     params: {id: '@id'} 
    } 

    }); 
}); 

マイスパーク・コントローラ:

delete("/todos", "application/json", (req, res) -> { 
     Todo todo = gson.fromJson(req.body(), Todo.class); 
     if (todo == null) throw new ApiError(404, "Could not find todo."); 
     todoDao.delete(todo); 
     return todo; 
    }, gson::toJson); 

    delete("/todos/:id", "application/json", (req, res) -> { 
     int id = Integer.parseInt(req.params("id")); 
     Todo todo = gson.fromJson(req.body(), Todo.class); 
     if (todo == null) throw new ApiError(404, "Could not find todo."); 
     todoDao.delete(todo); 
     return todo; 
    }, gson::toJson); 

DELETEボタン(NG-クリック= "deleteTodo(TODO、$インデックス)をクリック")最初のコントローラーが呼び出されましたが、秒は呼び出されませんでした。私はちょうどデバッグのために2つを作った。

私は右のidパラメータを見ることができます
angular.js:10661 DELETE http://localhost:4567/todos?id=3 404 (Not Found) 

が、なぜコントローラがそれをキャッチdoesntの: エラーメッセージはありますか?動詞とパラメータ{動詞: '挨拶'、 あいさつ: 'こんにちは'}?テンプレート/パス/を考える

+0

delete( "/ todos /:id"、 "application/json"、(req、res) - > { int id = Integer.parseInt(req.params( "id")); Todo todo = gson .doJson(req.body()、Todo.class); if(todo == null)新しいApiErrorをスローする(404、 "todoが見つかりませんでした"); todoDao.delete(todo); return todo; }、gson :: toJson); – zzheads

+0

問題のスパークコントローラーbody =このURLのJavaコントローラー、つまり意味ですか? – zzheads

+0

申し訳ありませんが、混乱しました。私は私のコメントを削除します。 (あなたもあなたを削除することができます) – gyc

答えて

0

$Resource

URL /パス/挨拶挨拶で結果=こんにちは

しかし、あなたのAPIが期待/

0

エラーが角.factoryコードにあったパラメータ、存在しなければならない

angular.module('todoListApp') 
.factory('Todo', function($resource){ 
    return $resource('/todos/:id', {id: '@id'}, { 
    update: { 
     method: 'PUT' 
    }, 
    save: { 
     method: 'POST' 
    }, 
    delete: { 
     method: 'DELETE', 
     params: {id: '@id'} 
    } 

    }); 
}); 

返品$ resourse行で ':id'が失われました。

関連する問題