Здравствуйте, Cyberax, Вы писали: C>Ну то есть, опять писать сразу нетленку без тестирования.
Да совершенно необязательно. В том-то и дело, что REST из коробки очень дружелюбен к развитию протоколов.
Вот мы сели, выписали минимально необходимый набор примитивов, с которыми будет работать клиент.
Сделали референс реализацию сервера. Может быть, сделали мок-сервер, который умеет что-то там отдавать.
Написали клиента в рамках этой минимальной спецификации, протестировали.
А затем, по мере обнаружения реальных эксплуатационных проблем, начинаем решать их по мере поступления.
Например видим, что у реальных клиентов возникают проблемы — мы отдаём им большие респонсы, а связь неустойчивая, и мало кто (кроме наших же локальных QA) ухитряется докачать эти гигабайты без обрыва.
Ок — говорим "давайте мы будем поддерживать ranges". Допиливаем сервер так, чтобы он поддерживал докачку.
Допиливаем клиента; тем, кто жалуется на обрывы, говорим "ставьте клиента версии 1.02 — он умеет докачивать оборванное".
При этом у нас наш сервер может быть раскатан не на все ендпоинты; клиентов мы не можем принудительно проапгрейдить всех — и всё прекрасно работает. Клиенты версии 1.0 работают с сервером версии 1.02, и клиенты версии 1.02 продолжают работать с серверами версии 1.0.
Обнаруживаем, что наши данные меняются локально, а пользователи выкачивают каждый раз по мегабайту? Допиливаем delta encoding на сервере, допиливаем его на клиенте, тестируем, публикуем.
И опять у нас полная взаимная совместимость.
Понимаем, что данные, которые мы отправляем, сильно избыточны? Прикручиваем gzip-компрессию.
И так далее, по списку.
C>>>Браузер тоже не поддерживает для всего. XMLHttpRequest его автоматически не умеет. Так что автоматически он будет только для ресурсов, которые включаются в HTML (т.е. изображения, скрипты, CSS). S>>И когда это XHR разучился использовать кэш браузера? В последний раз, как я этим интересовался, XHR работали точно так же, как и всё остальное. C>Не использует. fetch может использовать.
Странно. Я пытался подтверждение в интернете, но на стековерфлоу в основном обсуждается обратный вопрос — как заставить XHR перечитывать результат GET с сервера, а не из локального кэша.
Ладно, будет время — напилю какой-нибудь простой тест. C>При этом, ни один из известных мне небраузерных клиентов не поддерживает.
Это просто означает, что для тех клиентов такая проблема неактуальна. Ну, либо что их авторы плохо образованы, и тупо не знают возможностей используемого протокола. "Ну, а как вы хотели — 30 мегабайт это 30 мегабайт".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.