2016-08-18 3 views
2

TodoApp 용 REST API가 각도로 작성되어 ADD, UPDATE, GET ALL에 대한 경로를 설정했지만 DELETE 방법에 고정되어 있습니다. 내 각 컨트롤러 :각도가 적절하지 않음 각도

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 (잭, $ 지수) ") 첫 번째 컨트롤러가 호출되었지만 두 번째 컨트롤러는 호출되지 않았습니다. 디버깅 용으로 두 개를 만들었습니다.

angular.js:10661 DELETE http://localhost:4567/todos?id=3 404 (Not Found) 

내가 바로 id 매개 변수를 볼 수있는,하지만 왜 컨트롤러 나던 캐치 그것을 : 오류 메시지는? 동사 및 매개 변수 {동사 : '인사', 인사말 : '안녕하세요'}? 템플릿/경로/감안할 때

+0

(삭제 "/ 일하러/: ID", "애플리케이션/JSON"(REQ를 입술) -> {INT ID가있는 Integer.parseInt = (req.params ("ID")); 도도 TODO = GSON .doJad (req.body(), Todo.class); if (todo == null) throw 새 ApiError (404, "수행 할 수 없습니다."); 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 line'에서 ': id'가 손실되었습니다.

관련 문제