WebFlux系列(五)WebClient基本应用

Java#Spring#WebFlux#WebClient#Reactor

WebClient如何调用远程接口

视频讲解: https://www.bilibili.com/vide...
WebFlux系列(五)WebClient基本应用_第1张图片
WebfluxServerApplication.java

package com.example.webfluxserver;

import lombok.extern.log4j.Log4j2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.time.Duration;

@Log4j2
@SpringBootApplication
public class WebfluxServerApplication extends BaseApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebfluxServerApplication.class, args);
    }

    @RestController
    class EmployeeController {
        @GetMapping(value = "employees",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
        public Flux findAll(){
            return Flux.range(1,5).map(val ->{
                return list.stream().filter(employee -> employee.getId() ==val).findFirst().get();
            }).delayElements(Duration.ofMillis(1000));
        }
    }
}

WebfluxConsumerApplication.java

package com.example.webfluxconsumer;

import lombok.extern.log4j.Log4j2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.reactive.function.client.ClientResponse;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.Arrays;
import java.util.List;

@Log4j2
@SpringBootApplication
public class WebfluxConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebfluxConsumerApplication.class, args);
    }

    @RestController
    class EmployeeController {
        @GetMapping(value = "employees", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
        public Flux findAll() {
            return WebClient.create("localhost:8080/employees").get().retrieve().bodyToFlux(Employee.class);
        }
    }
}

公众号,坚持每天3分钟视频学习
WebFlux系列(五)WebClient基本应用_第2张图片

你可能感兴趣的:(java,spring,springboot)