Как отправить данные с помощью запроса angularjs $http.delete()? - программирование
Подтвердить что ты не робот

Как отправить данные с помощью запроса angularjs $http.delete()?

У меня есть ресурс "ролей", который имеет много-много отношений с "пользователем". Для администрирования "ролей" мне нужно отправить идентификатор роли и идентификатор пользователя на сервер, чтобы удалить эту роль от правильного пользователя (необязательно зарегистрированного пользователя).

Вот что я пытался, но в соответствии с docs это невозможно. Я знаю, что могу отправить два идентификатора в uri, но мой laravel backend автоматически устанавливает находчивый маршрут ресурса /{resourceid}, который я хотел бы использовать, если это возможно. Есть ли способ сделать это, что мне не хватает?

var removeRole = function (roleid, userid) {
        var input =[];
        input.user = userid;

        $http.delete('/roles/' + roleid, input).success(function (data, status) {
            console.log(data);
        });
    };
4b9b3361

Ответ 1

Вы можете выполнить http DELETE с помощью URL-адреса, например /users/ 1/role/2. Это был бы самый RESTful способ сделать это.

В противном случае, я думаю, вы можете просто передать идентификатор пользователя как часть параметров запроса? Что-то вроде

$http.delete('/roles/' + roleid, {params: {userId: userID}}).then...

Ответ 2

Мое предложение:

$http({
    method: 'DELETE',
    url: '/roles/' + roleid,
    data: {
        user: userId
    },
    headers: {
        'Content-type': 'application/json;charset=utf-8'
    }
})
.then(function(response) {
    console.log(response.data);
}, function(rejection) {
    console.log(rejection.data);
});

Ответ 3

У многих-многих отношений обычно есть таблица ссылок. Рассмотрите эту "ссылку" как самостоятельную сущность и дайте ей уникальный идентификатор, а затем отправьте этот идентификатор в запрос удаления.

У вас будет URL-адрес ресурса REST, например /user/role, для обработки операций в объекте "ссылка" пользователя.

Ответ 4

Я бы предложил прочитать этот URL-адрес http://docs.angularjs.org/api/ngResource/service/$resource

и переоцените, как вы вызываете свой метод удаления своих ресурсов.

в идеале вы хотели бы вызвать удаление самого элемента ресурса и не передавать идентификатор ресурса в метод удаления catch all

однако $http.delete принимает объект конфигурации, который содержит как свойства url, так и данные, вы могли либо обработать строку запроса, либо передать объект/строку в данные

может быть что-то в этом роде

$http.delete('/roles/'+roleid, {data: input});

Ответ 5

$http.delete метод не принимает тело запроса. Вы можете попробовать это обходное решение:

$http( angular.merge({}, config || {}, {
    method  : 'delete',
    url     : _url,
    data    : _data
}));

где в config вы можете передавать данные конфигурации, такие как заголовки и т.д.