2017-12-24 32 views
0

で応答本体にモノラル を送信する方法: https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html 春はwebflux:このドキュメントは言うボディサーター

ServerResponseは、HTTPレスポンスへのアクセスを提供します。それは不変なので、Builderを使用してServerResponseを作成します。ビルダを使用すると、応答ステータスの設定、応答ヘッダーの追加、および本文の提供が可能です。例えば、これは200のOKステータス、JSONコンテンツタイプ、およびボディを持つ応答を作成する方法である:

Mono<Person> person = ... 
ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(person); 

同様に、私は疲れてServerReponseビルダーの身体方法にMono<T>を渡すが、私次のエラーを取得する:

enter image description here

コードスニペット:

コンパイルエラー

Mono<Inventory> inventoryMono=request.bodyToMono(Inventory.class);   
return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(inventoryMono); 

しかし、それはコードの下で動作します:

ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(inventoryMono.doOnNext(inventoryRepository::save).log(),Inventory.class) 

私は何をしないのですか?

+0

ServerResponse.ok()を試しましたか?contentType(MediaType.APPLICATION_JSON).body(inventoryMono、inventory.class); –

答えて

0

ServerResponse.BodyBuilderにはこのようなメソッドが含まれていないため、ドキュメントに問題があると確信しています。 ボディーという1つの引数のメソッドが1つしかありませんが、これはBodyInserterが必要です。したがってMonoをBodyInserterに変換する必要があります(たとえばBodyInserters.fromObjectを使用)。

+0

yaですが、BodyInserters.fromObjectを使用するのではなく、リアクティブストリームタイプの1つを渡します。フレームワークのサポートが変換を行うことを望む – Barath

関連する問題