web-dev-qa-db-ja.com

RestangularでGETを介してパラメーターの配列を送信する方法

次のようなAPIのgetパラメータを使用してフィルタの配列を送信する必要があります。

/myList?filters[nickname]=test&filters[status]=foo

次のように直接オブジェクトを送信すると、

Restangular.one('myList').get({filters: {
    nickname: 'test',
    status: 'foo'
}});

実際に送信されるクエリは

?filters={"nickname":"test","status":"foo"}

実際の配列を送信する方法は?代替案について考えるべきですか?

27
Jihel

私はそれを行う方法を見つけました、名前に[]を持つ新しいオブジェクトを作成するためにフィルターオブジェクトを反復処理する必要があります:

var query = {};
for (var i in filters) {
    query['filters['+i+']'] = filters[i];
}

Restangular.one('myList').get(query);

作物:

&filters%5Bnickname%5D=test

誰かがより良い解決策を持っていますか?

19
Jihel

これを試して:

Restangular.all('myList').getList({filters: {
    nickname: 'test',
    status: 'foo'
}});
11
misaizdaleka

jSONを使用してコンテンツを文字列化する

{
  "startkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]),
  "endkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e", {}]),
}

に翻訳する

?endkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",+%7B%7D%5D&startkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"%5D

つまり.

?endkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",{}]&startkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]
7
user3330831

制御されたパラメータが非常に少ない場合は、この方法を使用できます。

いくつかのフィルターがあると仮定します。

    var api = Restangular.all('yourEntityName');
    var params = {  commonWay          : 'value1',
                   'filter[property1]' : filterVariable1,
                   'filter[property2]' : filterVariable2
                 };

    api.getList(params).then(function (data) {
        alert(data);
    });

これがお役に立てば幸いです。

7
Leonardo