Veri deponuzda yeni bir varlık oluşturuyorsanız, POST/kaydet özelliğini kullanmak istiyorsunuz. Veri deponuzda zaten var olan bir varlıkla ilişkili verileri güncelliyorsanız, PUT/update kullanmak istiyorsunuz. Yama, yalnızca varlık verilerinin bir alt kümesini güncellemek istediğinizde ayrılır. Köprü Metni Aktarım Protokolü uzanan RFC
Çeşitli uygulamalarda
Bak (HTTP) kısmi kaynak değişiklik yapmak için bir özellik gerektirir. Varolan HTTP PUT yöntemi yalnızca bir belgenin tam olarak değiştirilmesine izin verir. Bu teklif, varolan bir HTTP kaynağını değiştirmek için yeni bir HTTP yöntemi, PATCH ekler.
Hem PUT hem de PATCH işlemleriyle bir kimlik verirsiniz. Bir POST işlemi ile bir tane tedarik olmaz.
Açısal formlarımızı yüklediğimizde genellikle iki yoldan biriyle yapılır. Form, yeni bir varlık oluştururken yüklenirse, kimliğimiz olmaz. Bunu denetleyicide bileceğiz ve resource.save'yi arayacağız. Formu, formu doldurmak için bir uç noktadan veri çekmek için kullanılan bir kimlikle yükleyen kaynağı sağlarızsa, varlığın ne kadarına bağlı olarak bir resource.update veya resource.patch işlemi yapmak için kullanabileceğimiz kimliğe sahibiz güncelliyoruz.
Hem güncelleştirme hem de kaydetme işlemlerini gerçekleştiren bir örnek kaydetme işlevi. Burada, kaynak aramamızı yapmadan önce rota üzerinden bir kimlik sağlayıp sağlamadığımızı kontrol ediyoruz.
angular.module('appModule').controller('ExampleCtrl',
['$scope', '$routeParams',
function($scope, $routeParams) {
$scope.saveForm = function() {
//Do input validation before you make a resource call
if ($routeParams.id) {
//call resource update since we have an id
}
else {
//call resource save since we don't have an id
}
};
}]);
İşte angularjs belgelerinden örnek:
var app = angular.module('app', ['ngResource', 'ngRoute']);
// Some APIs expect a PUT request in the format URL/object/ID
// Here we are creating an 'update' method
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
// In our controller we get the ID from the URL using ngRoute and $routeParams
// We pass in $routeParams and our Notes factory along with $scope
app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
function($scope, $routeParams, Notes) {
// First get a note object from the factory
var note = Notes.get({ id:$routeParams.id });
$id = note.id;
// Now call update passing in the ID first then the object you are updating
Notes.update({ id:$id }, note);
// This will PUT /notes/ID with the note object in the request payload
}]);
Aradığınız ne olduğu belli değil: Özel bir PUT isteği nasıl oluşturulur
. Nesne yeniyse (kimliği yoksa) kaydetme POST olur, eğer yeni değilse PUT olacaktır. Hangi kısımda açıklama yapmak istiyorsun? – charlietfl
Bu, aradığım bilgi türüdür. $ Resource için açısal dokümanlar, bir öğenin yeni verilerle nasıl güncelleneceği konusunda biraz belirsizdir. Hizmetin nasıl yapılacağına ve bir kontrol işlemini destekleyen denetleyiciye örnek olarak arıyorum. Şu ana kadarki anlayışım, denetleyicide $ güncellemesi kullanıldığında ve hizmeti yamalarken açık olması gerektiğidir (örn. 'Update': {method: 'PATCH'}). $ Güncellemesine ihtiyacım olmadığını ve ilk verileri nasıl yayınladığımı görmek için bir $ save kullanmam gerektiğini mi söylüyorsunuz? – Kode