Итак, я только вхожу в WebClient, поскольку RestTemplate получил устаревшую заметку.
Дело в том, что я немного растерялся, когда дело доходит до запроса и потребления ответов.
НаСейчас я играю с API Riot Games для League of Legends.Если вы проверяете их документацию, вам нужно отправить ключ API в виде параметра или заголовка, чтобы использовать их сервисы.
Поскольку я пытаюсь использовать WebClient, сейчас я не беспокоюсь об абстракции, поэтому текущийУ меня есть следующий тест:
Класс Builder, сейчас я устанавливаю только baseUrl и ключ API:
@Service
public class WebClientService {
@Autowired
private Environment env;
public WebClient get(String url) {
return WebClient.builder()
.baseUrl(url)
.defaultHeader("X-Riot-Token", env.getProperty("app.riot.api.key"))
.build();
}
}
Чтобы проверить, я звоню в конечную точку / summoners, используякод ниже:
@Service
public class SummonerServices {
@Autowired
private WebClientService web;
private String riotEndPoint = "https://br1.api.riotgames.com/lol/summoner/v4/summoners/by-name/";
public Flux<Summoners> getSummoner(String summonerName) {
return web.get(riotEndPoint + summonerName).get()
.exchange().flatMapMany(e -> e.bodyToMono(Summoners.class));
}
}
У меня есть контроллер (опущен, потому что он не актуален), я его называю, и он получает ожидаемый результат.
Но я заметил, что вместо Flux
, я могу использовать Mono
, например, так:
public Mono<Summoners> getSummoner(String summonerName) {
return web.get(riotEndPoint + summonerName).get()
.exchange().flatMap(e -> e.bodyToMono(Summoners.class));
}
Что я не могу понять, читая документы и просматривая примеры в Интернете, это когда или почему следует выбирать одно из другого?
Похоже, что для обоих я могу иметь доступ к ответу заголовка, у меня есть доступ к тому же doOnSucess / doOnError и другим методам для обработки ответов и ошибок.
Они кажутся в значительной степенито же самое, но яВы бы не создали два точных способа сделать одно и то же с разными именами, верно?Поэтому, если бы кто-нибудь мог указать мне на документ, объясняющий Фукса и Моно, я был бы очень рад.Google вернул мне почти те же учебники, и они не объясняют, они просто используют их.