当前位置: 首页 > 知识库问答 >
问题:

Spring WebClient put映射:不支持内容类型'application/json'

赵英范
2023-03-14

我的服务器资源:

@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"
}
class PropertyForm {

    private String group;
    private String key;
    private String value;
    // getters & setters
}

共有1个答案

谢裕
2023-03-14

我终于找到了答案。问题实际上是在发送表单中。表单的作用域是包,与setter/getter相同。在我将PropertyForm提取到API模块并公开所有内容之后,它就可以工作了。

因此,解决方案是将form替换为:

public class PropertyForm {

    private String group;
    private String key;
    private String value;
    // public getters & setters
}

谢谢你的帮助和时间。

 类似资料: