diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-restclient/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-restclient/infrastructure/ApiClient.kt.mustache index 91463eaa179f..c6d11989dcef 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-restclient/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-spring-restclient/infrastructure/ApiClient.kt.mustache @@ -4,9 +4,8 @@ import org.springframework.core.ParameterizedTypeReference import org.springframework.http.HttpHeaders import org.springframework.http.HttpMethod import org.springframework.http.MediaType -import org.springframework.http.ResponseEntity import org.springframework.web.client.RestClient -import org.springframework.web.util.UriComponentsBuilder +import org.springframework.http.ResponseEntity import org.springframework.util.LinkedMultiValueMap {{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}open class ApiClient(protected val client: RestClient) { @@ -36,13 +35,12 @@ import org.springframework.util.LinkedMultiValueMap private fun RestClient.method(requestConfig: RequestConfig)= method(HttpMethod.valueOf(requestConfig.method.name)) - private fun RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig): RestClient.RequestBodySpec { - val uriComponentsBuilder = UriComponentsBuilder.fromPath(requestConfig.path) - requestConfig.query.forEach { key, values -> - uriComponentsBuilder.queryParam(key, "{$key}") + private fun RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = + uri(requestConfig.path) { builder -> + builder + .queryParams(LinkedMultiValueMap(requestConfig.query)) + .build(requestConfig.params) } - return uri(uriComponentsBuilder.encode().buildAndExpand(requestConfig.query + requestConfig.params).toUri()) - } private fun RestClient.RequestBodySpec.headers(requestConfig: RequestConfig) = apply { requestConfig.headers.forEach { (name, value) -> header(name, value) } } diff --git a/samples/client/echo_api/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/echo_api/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 43287db8fc44..d13aa82aab69 100644 --- a/samples/client/echo_api/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/echo_api/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -4,9 +4,8 @@ import org.springframework.core.ParameterizedTypeReference import org.springframework.http.HttpHeaders import org.springframework.http.HttpMethod import org.springframework.http.MediaType -import org.springframework.http.ResponseEntity import org.springframework.web.client.RestClient -import org.springframework.web.util.UriComponentsBuilder +import org.springframework.http.ResponseEntity import org.springframework.util.LinkedMultiValueMap open class ApiClient(protected val client: RestClient) { @@ -36,13 +35,12 @@ open class ApiClient(protected val client: RestClient) { private fun RestClient.method(requestConfig: RequestConfig)= method(HttpMethod.valueOf(requestConfig.method.name)) - private fun RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig): RestClient.RequestBodySpec { - val uriComponentsBuilder = UriComponentsBuilder.fromPath(requestConfig.path) - requestConfig.query.forEach { key, values -> - uriComponentsBuilder.queryParam(key, "{$key}") + private fun RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = + uri(requestConfig.path) { builder -> + builder + .queryParams(LinkedMultiValueMap(requestConfig.query)) + .build(requestConfig.params) } - return uri(uriComponentsBuilder.encode().buildAndExpand(requestConfig.query + requestConfig.params).toUri()) - } private fun RestClient.RequestBodySpec.headers(requestConfig: RequestConfig) = apply { requestConfig.headers.forEach { (name, value) -> header(name, value) } } diff --git a/samples/client/petstore/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 43287db8fc44..d13aa82aab69 100644 --- a/samples/client/petstore/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-spring-3-restclient/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -4,9 +4,8 @@ import org.springframework.core.ParameterizedTypeReference import org.springframework.http.HttpHeaders import org.springframework.http.HttpMethod import org.springframework.http.MediaType -import org.springframework.http.ResponseEntity import org.springframework.web.client.RestClient -import org.springframework.web.util.UriComponentsBuilder +import org.springframework.http.ResponseEntity import org.springframework.util.LinkedMultiValueMap open class ApiClient(protected val client: RestClient) { @@ -36,13 +35,12 @@ open class ApiClient(protected val client: RestClient) { private fun RestClient.method(requestConfig: RequestConfig)= method(HttpMethod.valueOf(requestConfig.method.name)) - private fun RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig): RestClient.RequestBodySpec { - val uriComponentsBuilder = UriComponentsBuilder.fromPath(requestConfig.path) - requestConfig.query.forEach { key, values -> - uriComponentsBuilder.queryParam(key, "{$key}") + private fun RestClient.RequestBodyUriSpec.uri(requestConfig: RequestConfig) = + uri(requestConfig.path) { builder -> + builder + .queryParams(LinkedMultiValueMap(requestConfig.query)) + .build(requestConfig.params) } - return uri(uriComponentsBuilder.encode().buildAndExpand(requestConfig.query + requestConfig.params).toUri()) - } private fun RestClient.RequestBodySpec.headers(requestConfig: RequestConfig) = apply { requestConfig.headers.forEach { (name, value) -> header(name, value) } }