Angular JS, как передать данные для удаления службы?

0

Я работаю в угловых js при удалении службы api при передаче данных в сервисе, он показывает ошибку 400 ошибок. Это мой js для вызова службы.

$scope.deleteUser = function(id){ 
    var data = 'Id='+id;   

     DataService.deleteUser(data).then(function successCallback(response) {
        console.log('deleted'); 
    }, function errorCallback(response) { 
            console.log(response);

    }); 

}

Это сервис js для удаления пользователей.

service.deleteUser = function(data){ 
                var config = {
                    headers:  {
                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                        'X-Auth-Token': 'mytoken'
                    } 
                };
                return $http.delete(mainURL + '/users', data, config); 
};

Это запрос curl api, где мне нужно передать данные:

curl -v -H "X-Auth-Token: mytoken" -X DELETE -F Id=665799088 http://<ipaddress>/users

  • 0
    В соответствии с документацией, метод удаления в сервисе $ http принимает только 2параметра, URL и конфигурацию, что означает, что ваши данные в настоящее время обрабатываются как config. Скорее всего, вы хотите передать некоторые параметры params вашему объекту конфигурации.
  • 0
    Как вы принимаете «Id» в вашем API? Вы получаете это от тела запроса?
Показать ещё 4 комментария
Теги:
service

2 ответа

0

Согласно документации по сервису $http, метод delete принимает только 2 параметра, url и config, что означает, что ваши данные в настоящее время обрабатываются как config. Вы, скорее всего, хотите передать некоторые параметры параметров в свой конфигурационный объект.

DataService.deleteUser(id).then(function successCallback(response) {
    console.log('deleted'); 
}, function errorCallback(response) { 
        console.log(response);

}); 

И ваша служебная декларация должна быть более похожей.

service.deleteUser = function(id){ 
                var config = {
                    headers:  {
                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                        'X-Auth-Token': 'mytoken'
                    },
                    params : { 
                        id : id 
                    }
                };
                return $http.delete(mainURL + '/users', config); 
            };

Также имейте в виду, что путь, похожий на /users/id является более правильным, если вы отвечаете за API.

  • 0
    Это также требует предупреждения о размещении защищенной информации в URL. Если идентификатор является чем-то вроде SSN, то эта информация будет регистрироваться в нескольких системах в виде простого текста, даже при использовании HTTPS.
  • 0
    Когда я попытался передать параметры в конфигурации, то он показывает ошибку «Нет заголовка« Access-Control-Allow-Origin »на запрошенном ресурсе» в firebug.
Показать ещё 2 комментария
0

Второй параметр в $ http.delete - это конфигурация, поэтому вам нужно передать объект конфигурации в качестве второго параметра, а не данных.

Метод DELETE не принимает тело запроса, поэтому вам не следует передавать идентификатор в виде данных. Вместо этого попробуйте этот http://main_url/users? Id = id

Поэтому в вашем сервисе используйте это

return $http.delete(mainURL + '/users?Id='+data, config);

Также проверьте, как вы передаете ID в свой API. Если вы передаете идентификатор в качестве параметра запроса, то выше будет работать, но если вы передаете его как параметр маршрута, то указанный выше URL-адрес не будет работать, но из вашего выражения CURL я считаю, что вы передаете Id в строке запроса и а не как параметр маршрута.

  • 0
    Я проверил его, чтобы передать идентификатор в виде строки запроса. Когда я нажимаю на службу curl в командной строке, он возвращает ответ без каких-либо ошибок.
  • 0
    Получаете ли вы неверный запрос, даже когда вы изменяете состояние удаления, как я показал выше. В качестве альтернативы попробуйте это также: return $ http.delete (mainURL + '/ users /' + data, config); Некоторые API принимают идентификатор в качестве параметра маршрута по умолчанию.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню