Following changes here (pulled with update of spring boot 3.4.2): https://github.com/spring-projects/spring-framework/commit/d927d64c40decba86e1ec44cedda7ddecf9c0aad

I have found out that in case of connector definition like

@HttpExchange(
            method = "GET",
            value = "/transfers/{transfer-id}",
            accept = {"application/json"}
    )
    ResponseEntity<Transfer> getTransfer(@PathVariable("transfer-id") String transferId, @RequestParam(value = "transfer-id") String transferIdReqParamValue, @RequestParam(value = "hint",required = false) String hint, @RequestParam(value = "include",required = false) List<String> include, @RequestParam(value = "trim",required = false) List<String> trim);

causes problem in incorrect replacement of transfer-id path variable.

I am trying to assign "{transfer-id}" as path variable value of transfer-id and curly brackets are removed during HttpRequestValues.appendQueryParams execution and it causes to be modified in resulting GET request from:

/transfers/{transfer-id}?transfer-id=1234

to

/transfers/transfer-id?transfer-id=1234 

which is incorrect.

Image

Comment From: matejkobza

It seems that the problem is even deeper, it substitutes value of pathVariable which has the same name as queryParameter with name of queryParameter and actual value of path variable is lost.

Comment From: rstoyanchev

Thanks for report and analysis. Indeed, since the query param handling now uses URI vars that are based on the actual query param name, it ends up overriding any existing URI variables (in this case for the path variable) if they have the same name.