java - with - jersey restful download




在Jersey中處理多個查詢參數 (2)

List<String> items=ui.getQueryParameters().get("item");

其中ui被聲明為其餘資源中的成員,如下所示:

@Context UriInfo ui;

缺點是它根本沒有出現在方法參數中。

在我正在處理的Web服務中,我需要實現一個帶有查詢參數的URI,它看起來像/stats?store=A&store=B&item=C&item=D

為了分解它,我需要能夠使用查詢參數來指定來自多個/所有商店的數據以及來自這些商店的多個/所有商品的數據。 到目前為止,我已經能夠實現一個查詢參數,以便提取項目數據,但我已經失去瞭如何實現更多的查詢,似乎無法找到我之前看到的資源交易有了這個實現。

到目前為止,我的方法是按照我的方法進行的

@GET
@Path("stats")
public String methodImCalling(@DefaultValue("All") @QueryParam(value = "item") final String item)
{
    /**Run data using item as variable**/
    return someStringOfData
}

這適用於一個項目,如果我不在URI中鍵入參數,將返回所有數據。 但是,我不確定如何處理比這更多的參數。

更新

我已經弄清楚如何通過簡單地向方法添加第二個參數來使用2個不同的參數,如下所示:

public String methodImCalling(@DefaultValue("All") @QueryParam(value = "store") final String store,
    @DefaultValue("All") @QueryParam(value = "item") final String item)

問題仍然是如何實現相同參數的多個值。


像axios js這樣的一些lib在發送多值param請求時使用方括號表示法:/ stats?store [] = A&store [] = B&item [] = C&item [] = D

要處理所有情況(帶或不帶方括號),您可以添加另一個這樣的參數:

public String methodImCalling(
  @QueryParam(value = "store") final List<String> store, 
  @QueryParam(value = "store[]") final List<String> storeWithBrackets, 
  @QueryParam(value = "item") final List<String> item,
  @QueryParam(value = "item[]") final List<String> itemWithBrackets) {
...
}

檢查檢查null的每個參數。





jersey