在发出磁通项时是否可以进行后续的WebClient调用?

问题描述 投票:0回答:1

我正在使用一个API,它只在执行事件搜索API调用时在响应中显示事件的场地ID。我正在寻找一种方法来制作Spring WebClient请求,以便在发出Flux项目时获取场地信息。

val events =  eventService.fetchEventsByLocation(lat,lon,radius)
            .flatMapIterable { eventResponse ->  EventTransformer.map(eventResponse)}
            .doOnNext { transformedEvent -> this.repository.save(transformedEvent) }


fun fetchEventsByLocation(lat:Double?,lon:Double?,radius:Double?): Mono<EventResponse> {

    val builder = UriComponentsBuilder.fromPath(SEARCH_EVENTS)
            .queryParam("categories", "103")
            .queryParam("location.within", 20.toString() + "mi")
            .queryParam("location.latitude", lat)
            .queryParam("location.longitude", lon)
            .queryParam("token",apiKey)

    return this.webClient.get()
            .uri(builder.toUriString())
            .accept(MediaType.APPLICATION_JSON_UTF8)
            .exchange()
            .flatMap { response -> response.bodyToMono(String::class.java) }
            .map { response -> transform(response) }
}

 fun fetchEventVenue(id:String?): Mono<Venue> {
    val builder = UriComponentsBuilder.fromPath(VENUES + id)
            .queryParam("token",apiKey)

    return this.webClient.get()
            .uri(builder.toUriString())
            .accept(MediaType.APPLICATION_JSON_UTF8)
            .exchange()
            .flatMap { response -> response.bodyToMono(Venue::class.java) }
}
kotlin api-design spring-webflux
1个回答
1
投票

doOnNext是一个中间操作。如果没有终端操作(例如subscribe),则不会消耗流。

© www.soinside.com 2019 - 2024. All rights reserved.