Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

Previamente utilizábamos RestTemplate para hacer un cliente REST en Spring Boot, pero ésta se va a quedar obsoleta, por lo que a partir de ahora tendremos que usar WebClient.

Dependencias

Advertencia
titleIMPORTANTE

Para utilizar WebClient la versión del parent de nuestra aplicación (está en el pom.xml) debe ser igual o superior a 2.6.0, si no pueden surgir conflictos con otras librerías.

Tendremos que añadir la siguiente dependencia a nuestro pom.xml:


Info

Con la configuración actual de las APIs, con el parent fundewebjs-api-parent (ver Creación y estructura de proyecto SpringBootMigración de APIs a Parent FundeWebJS).

No es necesario realizar ninguna configuración de librerías en pom.xml.

Bloque de código
languagexml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency>

Crear un WebClient

Para crear un WebClient, tendremos que crearlo como un bean en un archivo de configuración. Nos crearemos una clase para ello, WebClientConfig, donde crearemos cada webClient que necesitemos de esta manera, con la url correspondiente:

Bloque de código
@Configuration
public class WebClientConfig {

 	@Value( "${app.server.path}" )
	private String apiPath;

	@Bean
    	public WebClient webClient(WebClient.Builder webClientBuilder) {
        		return webClientBuilder
                				.baseUrl(apiPath.concat("https://apidesa.um.es/acade/expedienteacademico-api/private/v1.0").build();
    }
 	}
}

Si tenemos un solo WebClient, simplemente lo usaremos con @Autowired, si tenemos varios, además de @Autowired tendremos que añadir @Qualifier("nombre del bean").

...

Bloque de código
languagejava
return webClientBuilder
        .baseUrl("https://apidesa.um.esapiPath.concat("/acade/expedienteacademico-api/private/v1.0")
        .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
        .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
        .build();

...