簡體   English   中英

如何在 WebFilter 的實現中獲取路徑變量? (服務器WebExchange)

[英]How to get path variable in an implementation of WebFilter? (ServerWebExchange)

我在 Spring Reactive 應用程序中工作。 我知道如何使用 HttpServletRequest 在攔截器中獲取 PathVariable,如下所示:

request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); 

但是我們必須做一些改變,現在我們有了一個 WebFilter 實現,所以我們不使用 HttpServletRequest,而是使用 ServerWebExchange

如何從 ServerWebExchange 獲取路徑變量? 這是可能的?

我認為沒有直接的解決方案。

您可以執行以下操作:

ServerWebExchange.getRequest()將返回ServerHttpRequest對象,因此您可以從該對象中提取URI ,如下所示:

URI uri = serverHttpRequest.getURI()

然后,使用UriTemplate您應該能夠提取路徑變量值。

這是示例:

URI uri = new URI("abc.api.com/learn/sections/asdf-987/assignments/dsfwq98r7sdfg"); //suppose that your URI object is something like this
        String path = uri.getPath(); //get the path
        UriTemplate uriTemplate = new UriTemplate("/learn/sections/{sectionId}/assignments/{assigmentId}"); //create template
        Map<String, String> parameters = new HashMap<>();
        parameters = uriTemplate.match(path); //extract values form template
        System.out.println(parameters);

這將產生以下輸出:

 {sectionId=asdf-987, assigmentId=dsfwq98r7sdfg}

暫無
暫無

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

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