2013-11-15 40 views
10

Arka uç için djang-tastypie ve ön uç için AngularJs kullanan bir API üzerinde çalışıyorum. Angularjs $ http kullanarak CRUD fro talep gönderiyorum. GET, POST, PUT her şey yolunda ama bir PATCH isteği göndermeye çalıştığımda hata var Yöntem PATCH tanımlı değil. Açılı olarak bir api çağrıları fabrikası oluşturdum ama PATCH isteği burada çalışmıyor.angularjs kullanarak düzeltme isteği

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;   
    }); 
}; 
} 

o http.patch gösteren bu benim HTML kodunu

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

i konsolunda bu kodu kullanarak bir yol isteği göndermek bir işlev değil. Angularjs kullanarak bir PATCH isteği göndermek için ng-app ve servisleri nasıl yapılandırabilirim?

+2

[yama isteği göndermek için angularjs modülünü yapılandırmak] olası yinelenen (http://stackoverflow.com/questions/20305615/configure-angularjs-module to-send-yama-istek) – kynan

cevap

18

AngularJS'ye PATCH ekleme ile ilgili yaygın bir sorun, bu HTTP yöntemi için varsayılan Content-Type üstbilgisine sahip olmamasıdır (uygulama/json; PUT, POST ve DELETE için charset = utf-8). Ve bunlar $ httpProvider benim yapılandırma yama desteği eklemek şunlardır:

module.config(['$httpProvider', function($httpProvider) { 
$httpProvider.defaults.headers.patch = { 
    'Content-Type': 'application/json;charset=utf-8' 
} 
}]) 
İlgili konular