Skip to main content

Краткий ответ

Нет. 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:

Какой адрес использовать?

1

Конечные пользователи: используйте https и ничего не меняйте

Физические лица и компании, вызывающие API напрямую, должны использовать https://api.apiyi.com. Стандартные SDK для Python, Node и других языков отлично работают по умолчанию, без необходимости настройки протокола.
2

Клиенты на Go / Java с большим количеством параллельных запросов на загрузку изображений: оставьте https, отключите HTTP/2 в клиенте

HTTP/2 объединяет множество параллельных запросов в одном соединении. При загрузке изображений размером в несколько МБ любая заминка в этом соединении замедляет каждый проходящий по нему запрос. Если ваш клиент по умолчанию использует HTTP/2 и вы выполняете генерацию или редактирование изображений с большим количеством параллельных запросов, переключите клиент на HTTP/1.1. Сохраняйте адрес https; переходить на http не требуется.
3

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/2 отключается на стороне клиента; см. пример для Go выше. В других языках есть аналогичные параметры. После этого продолжайте использовать https://api.apiyi.com, и вы получите HTTP/1.1 с шифрованием.
Нет. Для браузеров и обычных текстовых чатов, где запросы небольшие и многочисленные, повторное использование соединений в HTTP/2 экономит ресурсы. Единое мультиплексированное соединение становится узким местом только тогда, когда большое количество параллельных запросов сочетается с большими телами запросов или ответов.

Связанная документация