Spring boot приложение, get запрос
Изучаю Spring boot, задание: Приложение должно обращаться к внешнему API restcountries.com: https://restcountries.com/v2/alpha?codes={code},{code},{code} Из полученного ответа использовать URL хранения флага заданного формата и сохранять изображение в указанную директорию с названием файла {полное_название_страны}.{формат_файла}. Пока что написал вот такой код:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
@Service
@AllArgsConstructor
public class FlagService {
public void getURLFlags(List<String> countryCode, String pathDirectory, String expansion) throws JsonProcessingException {
WebClient webClient = WebClient.create("https://restcountries.com/v2");
Mono<String> data = webClient
.get()
.uri("/alpha?codes=" + countryCode.toString())
.retrieve()
.bodyToMono(String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(String.valueOf(data));
try (InputStream in = URI.create(jsonNode.get("flags").get(expansion).asText()).toURL().openStream()) {
Files.copy(in, Paths.get(pathDirectory + "\\" + jsonNode.get("name").asText() + "." + expansion));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Подскажите пожалуйста, что здесь не так, как это исправить до рабочего состояния и как разбить это все на классы, чтобы соблюдались принципы ООП.