Здравствуйте, Cyberax, Вы писали:
C>>>Внимание, вопрос! Как это API будет взаимодействовать с Range?
S>>Тот, который вы указали — никак. Запрос HEAD не поддерживает хидер Range
S>>Зато вызвав HEAD, мы получим (или не получим) заголовок Accept-Ranges, который скажет всё, что нам надо знать.
C>Т.е. надо иметь копию сервера, причём работающую. И создать ситуацию, когда этот метод можно вызвать.
Нет, не надо. Надо читать RFC2616
C>И как мы это счастье будем тестировать? Код с использованием Range в интеграционных тестах не будет использоваться. Писать сразу нетленку без багов и надеяться, что если Docker в какой-то момент таки добавит Range, то всё будет работать сразу правильно?
Да, лучше всего — писать нетленку без багов. Прокси-сервера предоставляют такую нетленку.
В том то и разница между RPC и REST, что в последнем можно написать универсальный код, который корректно работает.
C>Никакие из известных мне генераторов кода по OpenAPI автоматически Range не поддерживают, кстати. Так что надеяться на инструментарий тоже не получится.
Конечно. И Accept-Encoding, и прочие Accept: не умеют.
C>Браузер тоже не поддерживает для всего. XMLHttpRequest его автоматически не умеет. Так что автоматически он будет только для ресурсов, которые включаются в HTML (т.е. изображения, скрипты, CSS).
И когда это XHR разучился использовать кэш браузера? В последний раз, как я этим интересовался, XHR работали точно так же, как и всё остальное.
C>Это такое мизерное достоинство, что несерьёзно.
Ну, ок.
C>Из-за того, что для нестатических conditional get бессмыслен. Т.е. файл не должен меняться, по крайней мере часто.
Всё ровно наоборот. Для статических мы ставим expiration:never, и никогда не перезапрашиваем.
А вот для контента, который
может измениться, conditional get — то, что доктор прописал.
Он позволяет нам дёргать документ хоть раз в секунду — и сразу же получить новую версию, если она есть. Или очень компактный 304, если нету.
S>>При желании, так можно сделать и в REST. Например, многие протоколы вместо Range:items поддерживают явные параметры size и page.
C>Можно. Но тогда нет никаких преимуществ перед gRPC.
Вот именно