Краткий ответ
Нет. http:// или https:// определяет, зашифрован ли трафик. HTTP/1.1 или HTTP/2 — это версия протокола, которая определяет, как запросы передаются по соединению. Возможна любая их комбинация.
Почти всем пользователям следует просто использовать этот адрес и ничего не менять:
Два отдельных измерения
Версия протокола согласовывается между клиентом и сервером при установке соединения. Она не определяется тем, как записан URL. Эндпоинт https:// APIYI поддерживает как HTTP/1.1, так и HTTP/2 и использует тот протокол, который поддерживает ваш клиент.
Поэтому распространенное мнение о том, что «http означает HTTP/1.1, а https означает HTTP/2», является заблуждением:
- Для адресов
http:// популярные клиенты практически всегда используют HTTP/1.1, но это лишь совпадение результата
- Для адресов
https:// некоторые клиенты используют HTTP/1.1, а другие — HTTP/2, в зависимости от самого клиента
Версия по умолчанию для распространенных клиентов (по https)
Чтобы проверить, какую версию вы действительно используете, выполните curl:
Какой адрес использовать?
Конечные пользователи: используйте https и ничего не меняйте
Физические лица и компании, вызывающие API напрямую, должны использовать https://api.apiyi.com. Стандартные SDK для Python, Node и других языков отлично работают по умолчанию, без необходимости настройки протокола.
Клиенты на Go / Java с большим количеством параллельных запросов на загрузку изображений: оставьте https, отключите HTTP/2 в клиенте
HTTP/2 объединяет множество параллельных запросов в одном соединении. При загрузке изображений размером в несколько МБ любая заминка в этом соединении замедляет каждый проходящий по нему запрос. Если ваш клиент по умолчанию использует HTTP/2 и вы выполняете генерацию или редактирование изображений с большим количеством параллельных запросов, переключите клиент на HTTP/1.1. Сохраняйте адрес https; переходить на http не требуется.
http://api.apiyi.com:16888: только как резервный вариант
Это официально предоставляемый незашифрованный эндпоинт. Используйте его только в качестве временного решения, когда само рукопожатие HTTPS завершается ошибкой (например, Python выдаёт SSLEOFError, но curl работает?), либо внутри доверенной внутренней сети или выделенной линии связи.
http:// не зашифрован. Ваш ключ API, prompts и изображения передаются по публичной сети в виде открытого текста и видны любому сетевому устройству на пути следования. Не полагайтесь на незашифрованный эндпоинт как на долгосрочное решение для продакшена.
Как переключить клиент Go на HTTP/1.1
Вариант без изменения кода — установить переменную окружения для процесса. Это подходит для готовых программ-шлюзов, таких как new-api и one-api:
В собственном коде задайте для Transport.TLSNextProto не равную nil пустую map:
Распространенные заблуждения
Для клиентов, которые уже используют HTTP/1.1, таких как Python и Node, переход на http экономит всего одно рукопожатие TLS (долю секунды). Это ничтожно мало по сравнению со временем генерации изображений в десятки секунд, и при этом вы теряете шифрование.
Нужно ли переходить на http://, чтобы отключить HTTP/2?
Нет. HTTP/2 отключается на стороне клиента; см. пример для Go выше. В других языках есть аналогичные параметры. После этого продолжайте использовать https://api.apiyi.com, и вы получите HTTP/1.1 с шифрованием.
Нет. Для браузеров и обычных текстовых чатов, где запросы небольшие и многочисленные, повторное использование соединений в HTTP/2 экономит ресурсы. Единое мультиплексированное соединение становится узким местом только тогда, когда большое количество параллельных запросов сочетается с большими телами запросов или ответов.
Связанная документация