Я пытаюсь использовать WebClient для вызова REST другой службы, но всегда получаю сообщение об ошибке:
org.springframework.web.reactive.function.UnsupportedMediaTypeException: тип содержимого 'application / json' не поддерживается
Все распределения имеют одинаковую версию зависимостей, вызов ресурсов через Postman работает нормально. Проблема в том, что первое приложение, действующее как прокси (клиент), пытается вызвать второе (сервис)
Ресурс моего сервера:
@RequestMapping(value = "/properties")
@PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE)
@ResponseStatus(CREATED)
public void saveProperty(@Valid @RequestBody PropertyForm form) {
service.save(new PropertyImpl(form));
}
Ресурс моего клиента:
WebClient client = WebClient.create(serviceUrl);
Mono<Void> save(PropertyForm form) {
return client.put()
.uri("properties")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(form))
.retrieve()
.bodyToMono(Void.class);
}
Мой файл build.gradle:
dependencies {
compile "org.springframework.boot:spring-boot-starter-reactor-netty:2.0.4.RELEASE"
compile "org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE"
compile "org.springframework:spring-webflux:5.0.4.RELEASE"
compile "javax.xml.bind:jaxb-api:2.3.0"
}
Мне не хватает какой-то зависимости, чтобы включить JSON contentType? Этот пример очень простой, но очень проблемный для меня.
Форма модели:
class PropertyForm {
private String group;
private String key;
private String value;
// getters & setters
}
Источник: https://gitlab.com/Berilzar/Sandbox