2013-11-15 22 views
10

Tôi đang làm việc trên API bằng cách sử dụng djang-tastypie làm phụ trợ và AngularJs cho giao diện người dùng. Tôi đang gửi yêu cầu cho CRUD bằng cách sử dụng angularjs $ http. GET, POST, PUT tất cả mọi thứ là tốt nhưng khi tôi đang cố gắng gửi một yêu cầu PATCH có lỗi Phương pháp PATCH không được xác định. Tôi đã tạo ra một nhà máy gọi api trong góc nhưng yêu cầu PATCH không hoạt động ở đó.yêu cầu vá bằng angularjs

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

này HTML của tôi đang

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

khi tôi gửi một yêu cầu con đường sử dụng mã này trong giao diện điều khiển nó cho thấy http.patch không phải là một hàm. Hãy cho tôi biết làm thế nào tôi có thể cấu hình ng-ứng dụng và dịch vụ để gửi một yêu cầu PATCH bằng cách sử dụng angularjs.

+2

thể trùng lặp của [cấu hình angularjs module để gửi yêu cầu vá] (http://stackoverflow.com/questions/20305615/configure-angularjs-module -to-send-patch-request) – kynan

Trả lời

18

Một vấn đề phổ biến với việc thêm PATCH vào AngularJS là nó không có tiêu đề Kiểu nội dung mặc định cho phương thức HTTP đó (ứng dụng/json; charset = utf-8 cho PUT, POST và DELETE). Và đây là cấu hình của tôi về $ httpProvider để hỗ trợ thêm bản vá:

module.config(['$httpProvider', function($httpProvider) { 
$httpProvider.defaults.headers.patch = { 
    'Content-Type': 'application/json;charset=utf-8' 
} 
}]) 
Các vấn đề liên quan