В чем разница между «текст / событие-поток» и «приложение / поток + JSON» - PullRequest
0 голосов
/ 30 августа 2018
@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();
}

Пока что я нашел противоречивую информацию: некоторые говорят, что они оба означают отправленные сервером события, а другие - что есть разница.

1 Ответ

0 голосов
/ 30 августа 2018

TL; DR: эта статья о dzone неправильна, а речь Россена верна.

text/event-stream - официальный тип мультимедиа для событий, отправляемых сервером (SSE); он будет префиксить биты данных префиксом data:, и вы также можете выбрать свой префикс, чтобы изменить значение этого фрагмента данных для клиента. Этот тип мультимедиа предназначен для браузеров, так как они поддерживают его с помощью EventSource JavaScript API.

application/stream+json - для обмена данными между серверами и клиентом http (все, что не является браузером). Это не префикс данных, а просто использование CRLF для разделения фрагментов данных. Обратите внимание, что команда Spring пересматривает этот тип носителя, потому что SPR-16742 (не стесняйтесь комментировать!).

...