Skip to content

Commit c629408

Browse files
committed
#22339 fix query parameter encoding
1 parent 38c6220 commit c629408

File tree

2 files changed

+12
-10
lines changed
  • modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-restclient/infrastructure
  • samples/client/petstore/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure

2 files changed

+12
-10
lines changed

modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-restclient/infrastructure/ApiClient.kt.mustache

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ import org.springframework.util.LinkedMultiValueMap
3535
private fun <I> RestClient.method(requestConfig: RequestConfig<I>)=
3636
method(HttpMethod.valueOf(requestConfig.method.name))
3737

38-
private fun <I> RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
39-
uri(requestConfig.path) { builder ->
40-
builder
41-
.queryParams(LinkedMultiValueMap(requestConfig.query))
42-
.build(requestConfig.params)
38+
private fun <I> RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>): RestClient.RequestBodySpec {
39+
val uriComponentsBuilder = UriComponentsBuilder.fromPath(requestConfig.path)
40+
requestConfig.query.forEach { key, values ->
41+
uriComponentsBuilder.queryParam(key, "{$key}")
4342
}
43+
return uri(uriComponentsBuilder.encode().buildAndExpand(requestConfig.query + requestConfig.params).toUri())
44+
}
4445

4546
private fun <I> RestClient.RequestBodySpec.headers(requestConfig: RequestConfig<I>) =
4647
apply { requestConfig.headers.forEach { (name, value) -> header(name, value) } }

samples/client/petstore/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ open class ApiClient(protected val client: RestClient) {
3535
private fun <I> RestClient.method(requestConfig: RequestConfig<I>)=
3636
method(HttpMethod.valueOf(requestConfig.method.name))
3737

38-
private fun <I> RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>) =
39-
uri(requestConfig.path) { builder ->
40-
builder
41-
.queryParams(LinkedMultiValueMap(requestConfig.query))
42-
.build(requestConfig.params)
38+
private fun <I> RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig<I>): RestClient.RequestBodySpec {
39+
val uriComponentsBuilder = UriComponentsBuilder.fromPath(requestConfig.path)
40+
requestConfig.query.forEach { key, values ->
41+
uriComponentsBuilder.queryParam(key, "{$key}")
4342
}
43+
return uri(uriComponentsBuilder.encode().buildAndExpand(requestConfig.query + requestConfig.params).toUri())
44+
}
4445

4546
private fun <I> RestClient.RequestBodySpec.headers(requestConfig: RequestConfig<I>) =
4647
apply { requestConfig.headers.forEach { (name, value) -> header(name, value) } }

0 commit comments

Comments
 (0)