Pergunta

Eu estou trabalhando em uma API usando djang-tastypie como back-end e AngularJs para front-end.Eu sou o pedido de envio de fro CRUD usando angularjs $http.GET, POST, PUT está tudo bem, mas quando eu estou tentando enviar um PATCH pedido há erro de Método de PATCH não está definido.Eu criei uma fábrica de chamadas de api angular, mas PATCH pedido não está a funcionar lá.

angular.module('tastypieModule', ['ngResource']).
factory('apiCall', function($http, $resource) {

    delete $http.defaults.headers.common['X-Requested-With'];

    var apiCall = $resource('/api/v1/:type/:id/',
        {type: '@type', username: '@userName', api_key: '@api_key', user: '@userID', id: '@id'},
        {
            get: {method: 'GET'},
            post: {method: 'POST', headers: {'Content-Type': 'application/json'}},
            del: {method: 'DELETE', headers: {'Content-Type': 'application/json'}},
            update: {method: 'PUT', headers: {'Content-Type': 'application/json'}},
            pupdate:{method:'PATCH',headers: {'Content-Type': 'application/json'}}
        }
    );

 return apiCall;
});  
 function MyCtrl($scope,$resource){
$scope.edit=function(){
   id=$scope.E_id
    $http.pupdate('/api/v1/quizsetting/'+id+'/', editedquizsetting).
    success(function(data, status) {
        $scope.status = status;
        $scope.data = data;
        $scope.editQuizSettingModal = false;
        //$scope.quizsettinglist.objects[$scope.e_quizsettingindex]=data;
        $(".message").append("object has been created successfully");
    })
    .
     error(function(data, status) {
        $scope.data = data || "Request failed";
        $scope.status = status;        
    });
};
}

este meu código HTML

<div ng-app="myApp">
<div ng-controller="MyCtrl">
<button type="button" ng-click="edit()">Edit</button>
</div></div>

quando eu enviar um caminho pedido usando este código no console mostra http.patch não é uma função.Diga-me como posso configurar ng-app e serviços para enviar um PATCH pedido utilizando o angularjs.

Foi útil?

Solução

Um problema comum com a adição de PATCH para o AngularJS é que ele não tem um padrão de cabeçalho de Tipo de Conteúdo para que o método HTTP (que é application/json;charset=utf-8 para PUT, POST e DELETE).E estes são os meus configuração de us $httpProvider para adicionar o patch de suporte:

module.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.patch = {
    'Content-Type': 'application/json;charset=utf-8'
}
}])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top