Подтвердить что ты не робот

API REST с HTTP/2

Несколько месяцев назад HTTP/2 был опубликован как RFC7540. Как это повлияет на существующий REST API, основанный на HTTP/1.1

В соответствии с wikipedia, HTTP/2 добавил новые функции. Как мы можем воспользоваться преимуществами этих новых функций?

Не стесняйтесь улучшать этот вопрос.

Спасибо.

4b9b3361

Ответ 1

Основная семантика HTTP сохраняется в HTTP/2. Это означает, что для идентификации ресурсов он все еще имеет HTTP methods, например GET, POST и т.д., HTTP headers и URIs.

Что изменилось в HTTP/2 по отношению к HTTP/1.1, так это то, как HTTP-семантика (например, "Я хочу PUT ресурс /foo на хосте domain.com" ) переносится по проводу.

В этом свете API-интерфейсы REST, построенные на HTTP/1.1, будут продолжать работать прозрачно, как и раньше, без каких-либо изменений в приложениях. Веб-контейнер, который запускает приложения, позаботится о переводе нового формата проводов в обычную семантику HTTP от имени приложений, а приложение просто увидит семантику HTTP более высокого уровня, независимо от того, была ли она передана через HTTP/1.1 или HTTP/2 по кабелю.

Поскольку формат протокола HTTP/2 более эффективен (в частности, из-за мультиплексирования и сжатия), API REST поверх HTTP/2 также пригодится.

Другое важное улучшение, присутствующее в HTTP/2, HTTP/2 Push, нацелено на эффективную загрузку коррелированных ресурсов и, вероятно, не полезно в утилите REST.

Типичное требование HTTP/2 должно быть развернуто через TLS. Для этого требуется, чтобы развертыватели перемещались от http до https и настраивали необходимую инфраструктуру для поддержки этого (покупайте сертификаты из доверенного органа, обновляйте их и т.д.).

Ответ 2

Спецификация HTTP/2 специально не вводила новую семантику для прикладного программиста. Фактически, основные клиентские библиотеки (NSUrlSession на iOS, OkHttp на Android, React Native, JS в среде браузера) поддерживают HTTP/2 прозрачно для вас как разработчика.

Благодаря возможности HTTP/2 мультиплексировать многие запросы по одному TCP-соединению, некоторые разработчики приложений оптимизации, реализованные в прошлом, такие как запрос пакетной обработки станет устаревшим и даже контрпродуктивным.

Функция Push, вероятно, будет использоваться для доставки событий и сможет заменить опросы и, возможно, веб-сайты в некоторых приложениях.

Одним из возможных применений функции push-сервера в API-интерфейсах HTTP/2 для REST является возможность ускорения устаревших приложений, то есть обратного прокси-уровня, путем предварительного ожидания ожидаемых запросов клиенту, а не ожидания их поступления. То есть нажимать ответы на профиль пользователя и другие общие вызовы API сразу после завершения запроса на вход.

Однако Push еще не широко внедрен в инфраструктуру серверов и клиентов.