2015-11-06 3 views
0

Я работаю с проектом, основанным на задачах, где у меня есть RESTful-фон с хранилищами данных JSON о задачах. Использование Flask в backend и AngularJS спереди.Rectangular POST

В нем перечислены все задачи для меня. Как мне преобразовать это в POST-вызов, когда я отправляю конкретный идентификатор задачи, чтобы получить всю информацию об этой задаче?

ответ

1

Если у вас есть реставрационный список, это означает, что каждый экземпляр внутри имеет вспомогательные вспомогательные функции. Для вас:

const list =Restangular.all('tasks').getList().then(function(result) { 
     $scope.tasks = result; 
    }); 
    .... 
    $scope.tasks[0].post() 

Но обратите внимание, что restangular принимает id как post parametr. {id: 2} то есть будет/URL/2

+0

И? Вы препроводите свой запрос. Это не имеет значения. Когда вы используете myarr [0], вы получаете рестанглулированный объект, который имеет все эти методы: https://github.com/mgonto/restangular (post, get, save, put ...) – Errorpro

+0

В вашем контроллере: 'function doPost = function (task) {task.post()} 'в вашем html'

+0

Нет, если вы хотите сделать сообщение, вам необходимо определить его: 'restangular.one (' task ', id) .get() или post () ' – Errorpro

0

Как я могу идти о преобразовании этого на вызов POST, где я посылаю конкретный идентификатор задачи, чтобы получать все сведения о выполнении этой задачи?

На самом деле, если вы хотите получить конкретную задачу со всеми ее подробностями, запрос GET будет более подходящим, чем POST.

В RESTful приложении GET предполагается только читать элементов (без пользовательских модификаций). POST/PUT зарезервирован для создания или обновления элемента, прочитайте соответствующую тему: PUT vs POST in REST

Так что в вашем случае, это будет получить все ваши задачи, и назначать их $scope.tasks модели:

Restangular.all('tasks').getList().then(function(response) { 
    $scope.tasks= result; 
}); 

Над getList() метод будет сделать запрос GET по URL-адресу: http://yourdomain.com/tasks

Вы также можете использовать различные обозначения для достижения того же (проверить Restangular документация для деталей):

$scope.tasks = Restangular.all('tasks').getList().$object; 

или вы можете назначить Restangular объект в Task переменной, которая просто контейнер, держа все ценные Restangular методы и маршрутизации. После этого вы можете вызвать различные методы этого объекта:

var Tasks = Restangular.all('tasks'); 
$scope.tasks = Tasks.getList().$object; 

После этого вы можете получить доступ к конкретной задаче в tasks коллекции, а затем вызвать некоторые другие методы на него:

var MyTask = $scope.tasks[0]; 
MyTask.get() // this will do GET at URL http://yourdomain.com/tasks/123, assuming 123 is id of existing task 
MyTask.post() // this will do POST at above URL 
MyTask.put() // this will do POST at above URL 
MyTask.save() // this will do PUT or POST - depends if MyTask is going to be udpated or created. 

Вы также можете запросить конкретную задачу вручную по адресу http://yourdomain.com/tasks/123:

Tasks.one('tasks', 123).get().then(function(response) { 
    $scope.mytask = response 
}); 
Смежные вопросы