簡體   English   中英

在CXF Restful Web Service中處理動態查詢參數

[英]Handling dynamic query parameter in CXF restful webservice

我想在CXF RESTful服務中處理動態查詢參數。

我在這里關心的是從服務端開始,我將不知道請求所附帶的參數/鍵名稱的數量。 您能否讓我知道我們如何處理這種情況/情況。

例如,我的客戶代碼如下所示,

Map<String, String> params = new HashMap<>();
params.put("foo", "hello");
params.put("bar", "world");

WebClient webClient = WebClient.create("http://url"); 
for (Entry<String, String> entry : params.entrySet()) {
    webClient.query(entry.getKey(), entry.getValue());
}

Response res = webClient.get(); 

以下代碼對我來說很好用,

public String getDynamicParamter(@Context UriInfo ui){
    System.out.println(ui.getQueryParameters());
    MultivaluedMap<String, String> map = ui.getQueryParameters();
    Set keys=map.keySet();
    Iterator<String > it = keys.iterator();
    while(it.hasNext()){
        String key= it.next();
        System.out.println("Key --->"+key+"  Value"+map.get(key).toString());
    }
    return "";

}

但是,請讓我知道以下內容,

  1. 是否是標准方式?
  2. 而且,還有其他方法可以實現嗎?

CXF版本:3.1.4

UriInfo獲取查詢參數

您已經猜到了, UriInfo API中有一些方法可以為您提供查詢參數:

UriInfo可以使用的資源類成員被注入@Context注釋:

@Path("/foo")
public class SomeResource {

    @Context
    private UriInfo uriInfo;

    @GET
    public Response someMethod() {
        MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
        ...
    }
}

並可以注入一個方法參數:

@GET
public Response someMethod(@Context UriInfo uriInfo) {
    MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
    ...
}

要獲取未解析的查詢字符串,請執行以下操作:

@GET
public Response someMethod(@Context UriInfo uriInfo) {
    String query = uriInfo.getRequestUri().getQuery();
    ...
}

HttpServletRequest獲取查詢參數

您可以通過將HttpServletRequest注入@Context注釋來獲得類似的結果,就像UriInfo提到的UriInfo一樣。 以下是一些有用的方法:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM