web-dev-qa-db-ja.com

「text / event-stream」と「application / stream + json」の違いは何ですか

@GetMapping(path = "/cars", produces = "text/event-stream")
public Flux<Car> getCarStream() {
    System.out.println("application/stream+json");
    return this.repository.findCarsBy().log();
}

上記のコードと以下のコードの違いは何ですか?

@GetMapping(path = "/cars", produces = "application/stream+json")
public Flux<Car> getCarStream() {
    System.out.println("application/stream+json");
    return this.repository.findCarsBy().log();
}

これまでのところ、矛盾する情報を見つけました。どちらもサーバー送信イベントを意味すると言う人もいれば、違いがあると言う人もいます。

5
Ekaterina

TL; DR:そのdzoneの記事は間違っており、ロッセンの話は正しい。

text/event-streamは、サーバー送信イベント(SSE)の公式メディアタイプです。データビットの前にdata:プレフィックスを付けます。また、プレフィックスを選択して、クライアントに対するそのデータの意味を変更することもできます。このメディアタイプは、EventSource JavaScript APIの使用をサポートしているため、ブラウザ用です。

application/stream+jsonは、サーバー間/サーバー/ httpクライアント(ブラウザー以外のもの)の通信用です。データにプレフィックスを付けることはなく、CRLFを使用してデータを分割します。 SPR-16742 (コメントすることを躊躇しないでください!)のため、Springチームはそのメディアタイプを再検討していることに注意してください。

5
Brian Clozel