Можно ли использовать повторяющиеся параметры в запросе ngResours

#javascript #angularjs #ngresource

#javascript #angularjs #ngresource

Вопрос:

Я использую Angular с ngResource, и у меня есть URL-адрес api:

 GET http://my.com/rest/items?inState=TRANSIENTamp;inState=FINAL
  

Как я мог бы выполнить запрос с двумя (не uniq) параметрами ‘inState’?

Это моя фабрика ресурсов:

 .factory('Resource', function ($resource, REST_URL) {
    return {
        items: $resource(REST_URL   'rest/items',
            {},
            {
                get: {method: "GET", params: {inState: '@inState'}}
            })
    };
})
  

И именно так я это называю:

 //GET http://my.com/rest/items?inState=TRANSIENT
Resource.items.get({inState: 'TRANSIENT'}, function (data) {
    //...
}, function (responce) {
    //...
});
  

Это работает, но проблема в том, как я отправляю параметры как объект: {inState: ‘TRANSIENT’}
Я не могу написать что-то вроде

 {inState: 'TRANSIENT', inState: 'FINAL'}
  

из-за полей должно быть uniq

PS Я знаю, что это может быть сделано с помощью $ http.

Ответ №1:

Вот как это сделать:

 {inState: ['TRANSIENT', 'FINAL']
  

Пример:

 //GET http://my.com/rest/items?inState=TRANSIENTamp;inState=FINAL
Resource.items.getHistory({inState: ['TRANSIENT', 'FINAL']}, function (data) {
    //...
}, function (responce) {
    //...
});
  

Ответ №2:

Не уверен, что у вас есть контроль над тем, что потребляет параметры, но если вы это сделаете, вы можете попробовать передать параметры как объект с массивом объектов в нем, например:

 { states : [{inState : 'TRANSIENT'}, {inState : 'FINAL'}]}
  

Затем просто выполните итерацию по states массиву и проверьте каждое inState свойство.