Не удается правильно направить Angular

Попытка сделать REST API для TodoApp написана на Angular, установить маршруты для 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'}
    }

  });
});

Контроллеры My Spark:

    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-click="deleteTodo(todo, $index)") первый контроллер вызывается, но не второй. Я сделал два только для отладки. Сообщение об ошибке:

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

где я могу видеть правильный параметр id, но почему контроллер не ловит его?

2 ответа

Ошибка была в угловом.факторном коде, должно быть

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'}
    }

  });
});

lost ':id' в строке возврата $resourse.

$Resource

Учитывая шаблон / путь /: глагол и параметр {verb:'greet', приветствие:'Hello'} приводит к URL /path/greet? Salutation=Hello

Но ваш API ожидает / параметр

Другие вопросы по тегам