春のWebクライアントは、マッピングを置く:コンテンツタイプ「アプリケーション/ JSONは」サポートされていません

以来:

私はRESTで別のサービスを呼び出すためにWebクライアントを使用しようとしていますが、私は常にエラーが表示されます。

org.springframework.web.reactive.function.UnsupportedMediaTypeException:コンテンツタイプ「アプリケーション/ JSON」はサポートされません

すべての割り当てはポストマンは罰金を作品を通してリソースを呼び出し、依存関係の同じバージョンを持っています。最初のアプリケーションは、プロキシ(クライアント)として機能し、第二1(サービス)呼び出そうとした場合に問題があります

私のサーバーのリソース:

@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

以来:

私は最終的に答えを発見しました。問題は、実際には、送信フォームにありました。フォームの範囲は、セッター/ゲッターと同じパッケージでした。私はAPIモジュールにPropertyFormを抽出し、すべてのものを公開してきた後、それが仕事に述べています。

だから、解決策をして、フォームを交換することでした。

public class PropertyForm {

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

あなたの助けと時間をいただき、ありがとうございます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=218834&siteId=1