У нас есть эта служба, использующая ng-resource:
var app = angular.module('salonesbelleza', []);
app.service("CentroBorrar_srv", function ($resource, UrlBaseApi_srv) {
return{
return $resource('wa-centros/:id',
{id:'@id', access_token:'@access_token'},
{ "post": { method: "DELETE",
isArray: false,
headers: {
'Accept': 'application/json; q=1.0, */*; q=0.1',
'Content-Type':'application/json'
}
}}
);
}
});
В контроллере Мы используем этот способ
var CentroBorrar_data = CentroBorrar_srv.post({
id:10,
othervar1:'VALUE_1',
othervar1:'VALUE_2',
access_token:'MY TOKEN'
});
С помощью этого ng-ресурса Мы удаляем элемент с id = 10, используя некоторые дополнительные вары, такие как acces_token
Эта работа очень хорошо. И это URL-адрес, сгенерированный этим ng-ресурсом
wa-centros/10?access_token=MY_TOKEN&othervar1=VALUE_1&othervar2=VALUE_2
Все vars отправляются с использованием GET в URL. Но мы хотим отправить некоторые вары, используя POST и другие, используя GET. Например, мы хотим отправить othervar1 и othervar2 с помощью POST.
Есть ли способ Мы можем принудительно определить определение ресурса ng, которое var в контроллере должно быть отправлено POST и которое должно быть отправлено с использованием GET
Я чувствую себя потерянным по этому поводу
заранее большое спасибо
Да, можно добавить параметры. Вы должны объявить для этого пользовательское действие. Существует два способа создания пользовательского действия с типом "не-GET" (взятым из угловой документации):
Как я вижу, вы используете первый, а именно не-GET-класс. На основе вашего примера вы должны иметь что-то вроде этого:
return $resource('rest-link/:id',
{id:'@id', access_token:'@access_token'},
{ "yourCustomActionNameHere": { method: "POST",
isArray: false,
headers: {
'Accept': 'application/json; q=1.0, */*; q=0.1',
'Content-Type':'application/json'
},
params : {yourParam1 : val}
}}
);
Обратите внимание, что параметры добавлены в действие вашего ресурса, а именно yourParam1. Как я уже упоминал ранее, это действие класса "не-GET", что означает, что вы также передаете объект данных. Вы должны принять это во внимание при вызове своего ресурса следующим образом:
<YourResourceNameHere>.yourCustomActionNameHere({yourParam1: 12}, dataObject)
Вам следует позаботиться о параметрах, а именно параметрах по умолчанию. В случае не-GET- метода, такого как ваш, не предоставляющий значение параметра paramName
, означает, что поиск будет продолжаться до свойств объекта, определенных вами в вашем dataObject
отправленного методу POST, ища пару name-value
где name
то же самое с вашим paramName
.
Вы должны взглянуть на методы экземпляра, они проще использовать, на мой взгляд, и обеспечивают большую гибкость и удобочитаемость. Например, вы могли бы позвонить как CentroBorrar.$save({param: val})
для действия POST, где CentroBorrar является экземпляром и будет содержать объект данных. (здесь короткий пример). Надеюсь, это поможет.