рдХреНрдпрд╛ $resource
рдХреЛ create
рдФрд░ update
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
Example:
{ 'get': {method:'GET'},
'save': {method:'POST'},
'create': {method:'POST'},
'update': {method:'PUT'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'} };
рдХреНрдпрд╛ рдЖрдИрдбреА рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдкрд░ save
рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП create
save
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдФрд░ рдЖрдИрдбреА рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ update
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ?
cuz рджреВрд╕рд░реЛрдВ рдХреА рдЕрд▓рдЧ рд░рд╛рдп рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд╣реИ?
рдЕрджреНрдпрддрди -> рдкреИрдЪ (рдЖрдВрд╢рд┐рдХ рдЕрджреНрдпрддрди)
рдмрджрд▓реЗрдВ -> рдкреБрдЯ (рд╕рдВрд╕рд╛рдзрди рдХреЛ рдмрджрд▓реЗрдВ)
рдмрдирд╛рдПрдВ -> рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ (рдПрдХ рдирдпрд╛ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдПрдВ)
рдпрджрд┐ рдЖрдк рдереЛрдбрд╝рд╛ рдФрд░ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓реЗрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЦреБрдж рдХрд╛ рддрд░реАрдХрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдП:
var notes = $resource('/notes/:id', null, {
'update': { method:'PUT' }
});
@jimmywarting - рдЖрдкрдХрд╛ рдЙрддреНрддрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рди рдХрд┐ рд╕рдорд╛рдзрд╛рдиред
var notes = $resource('/notes/:id', null, {
'update': { method:'PUT' }
});
notes.prototype.$save = function() {
if (this.id) {
return this.$update();
} else {
return this.$create();
}
};
@jansoren рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╢реНрди рдЙрдард╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХреЛрдб рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдЖрдИрдПрдордУред рднреВрддрдкреВрд░реНрд╡ред:
рдХреНрдпрд╛ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдПрдХ рдЕрджреНрдпрддрди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде $ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
- рд╕реЗрд╡ рдФрд░ рдХреНрд░рд┐рдПрдЯ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реЛрдЧрд╛?
- рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреИрдХрдПрдВрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛ рд░рд╣реА HTTP рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдп рдорд┐рд▓реА рд╣реИред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ PUT рдХреЗ рд╕рд╛рде-рд╕рд╛рде POST рдФрд░ PATCH рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдИрдбреА рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдкрд░ рдХреЙрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡ рдПрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдФрд░ рдЖрдИрдбреА рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ?
- рдЖрдк
id
рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреИрдХрдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЖрд░рдИрдПрд╕рдЯреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬрдм рдпрд╣ рдЙрддрдирд╛ рд╣реА рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╡рд╣ рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдЯреАрдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЕрд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред
@pkozlowski-opensource рдХреЗ рдЬрд╡рд╛рдм :
save
рдФрд░ create
рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ред save
рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рддреЗ рд╕рдордп рдкреЛрд╕реНрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдмрджрд▓рддреЗ рд╕рдордп PUT рдХрд░реЗрдЧрд╛ред create
рдХреЗрд╡рд▓ POST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдПрдЧрд╛ред@shlensky рдХреА рдорджрдж рд╕реЗ рдореИрдВрдиреЗ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ:
рд╕рдВрд╕рд╛рдзрди.рдЬреЗрдПрд╕
(function () {
var resource = function ($resource) {
var resource = {};
resource.create = function(url) {
return createResource($resource, url)
}
return resource;
};
var createResource = function($resource, url) {
var resource = $resource(url, getParamDefaults(), getActions());
resource.prototype.$save = function() {
if (this.id) {
return this.$update();
} else {
return this.$create();
}
};
return resource;
};
var getParamDefaults = function() {
var paramDefaults = {
id:'<strong i="17">@id</strong>'
};
return paramDefaults;
};
var getActions = function() {
var actions = {
'create': {method:'POST'},
'update': {method:'PUT'},
'all': {method:'GET', isArray:true}
};
return actions;
};
angular.module('myModule').factory('resource', resource);
}());
рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб.рдЬреЗрдПрд╕
(function () {
var CreditCard = function (resource) {
return resource.create('card/:id');
};
angular.module('myModule').factory('CreditCard', CreditCard);
}());
myController.js
(function () {
var myController = function ($scope, CreditCard) {
// get
var creditCard = CreditCard.get({id:'abc123'}, function() {
console.log(creditCard);
});
// all
var creditCards = CreditCard.all(function() {
console.log(creditCards);
// update
var creditCard = creditCards[0];
creditCard.name = 'changed';
creditCard.$save(function() {
console.log(creditCard)
});
});
// create
var creditCard = new CreditCard();
creditCard.name = 'new';
creditCard.$save(function() {
console.log(creditCard)
});
};
angular.module("myModule").controller("myController", myController);
}());
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╡рд╣ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдмрдирд╛рдиреЗ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
@caitp рдпрд╣ рд╡рд╣реА рд╕рдЯреАрдХ рдкреНрд░рд╢реНрди рд╣реИ рдЬреЛ рдореИрдВ рдкреВрдЫрдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ :-)
рдХреНрд░рд┐рдПрдЯ/рдЕрдкрдбреЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдИрдбреА рдиреЛрдЯреЗрд╢рди рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдорд╛рдорд▓реЛрдВ рдХреЛ рдФрд░ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рдЙрд╕рдореЗрдВ рдЖрдИрдбреА рдирд╣реАрдВ рднрд░реА рдЧрдИ рд╣реИред
@jansoren рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдо рд╕реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧрджрд░реНрд╢рди рд╕реНрдкрд╖реНрдЯ рд╣реИ: $resource рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реАрд╕реНрдЯрдлреБрд▓ рдмреИрдХ-рдПрдВрдб рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рджреГрд╢реНрдп рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд╡рд╣рд╛рдВ рдХрд╕реНрдЯрдо/рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рд╣реИрдВред $resource рдмрд╣реБрдд рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ $resource рдХреЛ $http рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░реИрдкрд░ рдХреА рддрд░рд╣ рдмрдирд╛рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ $roesoure рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
IMO $resource, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рд╡рд╣реА рдЪреАрдЬреЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмреИрдХрдПрдВрдб/рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдВ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдлреНрд▓реЗрдХреНрд╕ рдкреЙрдЗрдВрдЯ рдЫреЛрдбрд╝ рджреЗрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рдЗрд╕реЗ рдЕрдзрд┐рдХ "рд╡рд┐рджреЗрд╢реА" рдмреИрдХрдПрдВрдб/рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛ рд╕рдХреЗрдВ (рдпрд╛ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдХреЛрдИ рдЖрдо рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд╣реИ)ред
рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдпрджрд┐ method
рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдореЛрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗред
@caitp - рдпрд╣ рдКрдкрд░ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:
resource.prototype.$save = function() {
if (this.id) {
return this.$update();
} else {
return this.$create();
}
};
@ pkozlowski-opensource - рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ngResource рдкреНрд░рд▓реЗрдЦрди рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ; рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PUT рдФрд░ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП POSTред PUT рдХреЛ ngResource рдореЗрдВ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? (рдореЗрд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╢реНрди рдкрд░ рд╡рд╛рдкрд╕)
рдЬрдм рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрд░реАрдХреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рд╡реИрд╕реЗ PUT рдФрд░ POST рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдпрд╛ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдмрдЪреНрдЪреЗ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрд░рдПрдлрд╕реА 2616 рд╕реЗ :
рдкреБрдЯ рд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз рдХрд░рддреА рд╣реИ рдХрд┐ рд╕рдВрд▓рдЧреНрди рдЗрдХрд╛рдИ рдХреЛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рдХреЗ рддрд╣рдд рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
...рдмрдирд╛рдо...
POST рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдЗрдХрд╛рдИ рдХреЛ рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рд╕рдВрд╕рд╛рдзрди рдХреЗ рдПрдХ рдирдП рдЕрдзреАрдирд╕реНрде рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗ ...
рдЕрдзрд┐рдХрд╛рдВрд╢ RESTful рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрдирд╛рдирд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ POST рдХреЗ рд▓рд┐рдП Angular рдХреЗ рдореМрдЬреВрджрд╛ рдиреНрдпреВрдЯреНрд░рд▓ рдЯрд░реНрдо save
рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реИ рдЕрд░реНрде рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗред рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ create
рдлрд╝рдВрдХреНрд╢рди рдЬреЛ POST рдХреЛ рдХреЙрд▓ рднреА рдХрд░рддрд╛ рд╣реИ, рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╕рдВрдЪрд╛рд░ save
рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
_рд╣рд╛рд▓рд╛рдБрдХрд┐_, рдореИрдВ рдПрдХ PUT рд╡рд┐рдзрд┐ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдБ: PUT рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ idempotent рд╣реИ (рдКрдкрд░ рдЦрдВрдб 9.1.2 рджреЗрдЦреЗрдВ) рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреА рдХрдИ рдкреНрд░рддрд┐рдпреЛрдВ рдХрд╛ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╣реА рдкреНрд░рддрд┐ рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред POST рдореЗрдВ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдХреНрд╕рд░ рд╕рд░реНрд╡рд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреА рдХрдИ рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдПрдВрдЧреЗред рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ, рдпрд╣ рд╕рдорд╛рд╡реЗрд╢рди рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА "рдорд╛рдирдХ" рдЖрд░рдИрдПрд╕рдЯреА рдЯреВрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЧреИрд░-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдВрдкрд╛рджрди рдорд╛рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдмреИрдХ-рдПрдВрдб рдЖрд░рдИрдПрд╕рдЯреА рд╕рдВрд╕рд╛рдзрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдПрдХ рдкреБрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ:
PUT /resource/{resource} -> update
рд╣реИ рдЬреЛ Route::resource
рдкрджреНрдзрддрд┐ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИредPUT /resource/{resource} -> update
редрд╕рд╛рде рд╣реА, рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╕реИрдХрдбрд╝реЛрдВ рд░реВрдЯрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рдЧрднрдЧ рд╕рднреА PUT рдХреЛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдХреЛрд░ рд╡рд┐рдзрд┐ рдорд╛рдирддреЗ рд╣реИрдВред
рджреА, рдпрд╣ _broken_ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддреНрдпреЗрдХ $resource
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ PUT рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
@tdhsmith
рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдПрдХ рдкреБрдЯ рд╡рд┐рдзрд┐ рд░рдЦрдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рдореИрдВ рдЙрд╕реЗ "рдЕрдкрдбреЗрдЯ" рдХрд╣реВрдВрдЧрд╛, рдФрд░ рдПрдХ рдкреИрдЪ "рдЖрдВрд╢рд┐рдХ_рдЕрдкрдбреЗрдЯ" рд╣реЛрдЧрд╛
рдореИрдВрдиреЗ рдпреЗ рдирд╛рдо рдбреАрдЬреЗрдВрдЧреЛ рдЖрд░рдИрдПрд╕рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рд▓рд┐рдП рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ:
рдбреАрдИрдПрдлрд╝ рдЕрдкрдбреЗрдЯ (рд╕реНрд╡рдпрдВ, рдЕрдиреБрд░реЛрдз, рдкреАрдХреЗ = рдХреЛрдИ рдирд╣реАрдВ):
рдЙрддреНрддреАрд░реНрдг
def рдЖрдВрд╢рд┐рдХ_рдЕрдкрдбреЗрдЯ (рд╕реНрд╡рдпрдВ, рдЕрдиреБрд░реЛрдз, рдкреАрдХреЗ = рдХреЛрдИ рдирд╣реАрдВ):
рдЙрддреНрддреАрд░реНрдг
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХ-рдПрдВрдб рдЖрд░рдИрдПрд╕рдЯреА рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдкреБрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
ASP.NET рдореЗрдВ рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ PUT рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ c# рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмреИрдХ-рдПрдВрдб рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдРрдк рдХреЗ v1 рдореЗрдВ рдПрдХ рдкреБрдЯ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реИ рдирд╛? +1 рдХреБрдЫ рд╕рдореНрдореЗрд▓рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЛрдгреАрдп рдореЗрдВ рдХреЛрдб рдХреА рдЗрди рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдирдХ рд╕рдорд╛рд╡реЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
$resource рдореЗрдВ рдЕрдкрдиреА рдХрд╕реНрдЯрдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдл рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП http://kirkbushell.me/angular-js-using-ng-resource-in-a-more-restful-manner/ рджреЗрдЦреЗрдВред
@sjatkins рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдХрд╛рдордХрд╛рдЬ рдХрд╛ рдЕрдзрд┐рдХ рд╣реИред
рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ $resource рдореЗрдВ PUT рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PUT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, IMOред рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реЛ, рд▓реЗрдХрд┐рди рдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЙрдЪрд┐рдд рд╣реИред
рд╕рд╛рде рд╣реА рд▓реЛрдЧ рдкреВрдЫ рд░рд╣реЗ рдереЗ рдХрд┐ $save рдФрд░ $create рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж $delete рдФрд░ $remove рдХреЗ рдмреАрдЪ рд╕рдорд╛рди рдЕрдВрддрд░, рдпрд╛рдиреА рдХреЛрдИ рдирд╣реАрдВ? рдореБрдЭреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ ngResource рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИред
рд╕рдВрд╕рд╛рдзрди рдХреЛ рд░реЗрд╕реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рд╕рд┐рд░реНрдл http рд░реЗрд╕реНрдЯрдлреБрд▓ рд░реВрдЯ рдмреЗрдХ рдХрд┐рдП рдЧрдП рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ ...
рдЙрджрд╛рд╣рд░рдг:
{
'get': {method:'GET'},
'post': {method:'POST'},
'update': {method:'PUT'},
'query': {method:'GET', isArray:true},
'delete': {method:'DELETE'}
};
рдХреНрдпреЛрдВрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреИрдХрдПрдВрдб рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдп рд╣реЛрддреА рд╣реИред
$resource
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдЖрдк $resourceProvider.defaults.actions
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЫреЛрдбрд╝рдирд╛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдирд┐рд░реАрдХреНрд╖рдг рдерд╛ред
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд▓реНрдкрдирд╛ рд╣реИ рдХрд┐, рдореИрдВ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдПрдХ рдФрд░ рдмрд╛рд░ рджреВрдВрдЧрд╛ред рдореБрдЭреЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдШрдЯрдХ рдкрд╕рдВрдж рд╣реИрдВ!
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ PUT рдХреА рдЖрд╕рд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА