Итак, у меня есть 5 микросервисов, работающих на разных портах. У меня есть служба под названием служба каталога фильмов, и я пытаюсь получить оценки из фильмов по идентификатору, который передается через параметры запроса. У меня также работает сервер обнаружения, который работает нормально.
Моя конечная точка моей функции выглядит так:
@GetMapping("/test")
fun testFun(@RequestParam movieIds:List<String>) : Flux<Rating> {
return movieCatalogService.findRatingByMovieId(movieIds)
}
Мой findRatingByMovieId выглядит так:
fun findRatingByMovieId(movieIds: List<String>) : Flux<Rating> {
return webClient.build()
.get()
.uri { uribuilder ->
uribuilder.path("http://ratings-data-service/ratings/list")
.queryParam("movieIds", movieIds)
.build()
}
.retrieve()
.bodyToFlux(Rating::class.java)
}
Моя конечная точка моей службы данных рейтингов выглядит так:
@GetMapping("/list")
fun findRatingsByMovieIds(@RequestParam movieIds:List<String>) : Flux<Rating> {
return ratingsDataService.findRatingsByMovieId(movieIds)
}
И сервисная функция:
fun findRatingsByMovieId(movieIds:List<String>) : Flux<Rating> {
return ratingsDataRepository.findAllById(movieIds)
}
При отправке запроса на локальный хост: 8080/catalog/test?movieIds=6076bd2aa35f61406db0da84&movieIds=6076bd48a35f61406db0da85
Я получаю ошибку в
Консоль IntelliJ выглядит следующим образом:
400 Bad Request from UNKNOWN
at org.springframework.web.reactive.function.client.WebClientResponseException.create(WebClientResponseException.java:179) ~[spring-webflux-5.3.5.jar:5.3.5]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint ⇢ 400 from GET localhost:7654/ratings/list?movieIds=6076bd2aa35f61406db0da84&movieIds=6076bd48a35f61406db0da85 [DefaultWebClient]
|_ checkpoint ⇢ Handler io.eraslan.moviecatalogservice.controller.MovieCatalogController#testFun(List) [DispatcherHandler]
|_ checkpoint ⇢ HTTP GET "/catalog/test?movieIds=6076bd2aa35f61406db0da84&movieIds=6076bd48a35f61406db0da85" [ExceptionHandlingWebHandler]
Когда я напрямую вызываю конечную точку сервиса ratings-data-service:
localhost: 7654/рейтинги/список?movieIds=6076bd2aa35f61406db0da84&movieIds=6076bd48a35f61406db0da85
все работает нормально, как это возможно?