Skip to main content

簡潔な回答

いいえ。http:// と https:// は、トラフィックが暗号化されるかどうかを決定します。HTTP/1.1 と HTTP/2 はプロトコルのバージョンであり、接続上でリクエストがどのように伝送されるかを決定します。この2つのどのような組み合わせも可能です。 ほぼすべてのユーザーは、単にこのアドレスをそのまま使用し、何も変更する必要はありません:

2つの独立した次元

プロトコルのバージョンは、接続の確立時にクライアントとサーバー間でネゴシエーションされます。URLの記述方法によって決定されるわけではありません。APIYIの https:// エンドポイントは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を使用してください。PythonやNodeなどの一般的なSDKは、プロトコルのチューニングを必要とせず、そのまま適切に動作します。
2

高同時実行数で画像をアップロードするGo / Javaクライアント:httpsを維持し、クライアント側でHTTP/2を無効化

HTTP/2は単一の接続に多数の並行リクエストを集約します。数MBの画像をアップロードする場合、その接続でわずかな問題が発生しただけでも、その接続上のすべてのリクエストが遅延します。クライアントがデフォルトでHTTP/2を使用しており、高同時実行数の画像生成や編集を行う場合は、クライアントをHTTP/1.1に切り替えてください。httpsアドレスを維持してください。httpに切り替える必要はありません。
3

http://api.apiyi.com:16888:フォールバック専用

これは公式に提供されている平文エンドポイントです。HTTPSハンドシェイク自体が失敗する場合(例:PythonでSSLEOFErrorが発生するがcurlは動作する?)、または信頼できる内部ネットワークや専用線内でのみ、一時的な回避策として使用してください。
http://は暗号化されていません。お客様のAPIキー、prompt、画像は平文でパブリックネットワークを通過するため、経路上のあらゆるネットワーク機器から閲覧可能です。本番環境の長期的な運用構成として平文エンドポイントに依存しないでください。

GoクライアントをHTTP/1.1に切り替える方法

コードを変更しない方法として、プロセスに環境変数を設定する方法があります。これはnew-apiやone-apiなどの既存のゲートウェイプログラムに適しています:
独自のコードでは、Transport.TLSNextProtoに非nilの空マップを設定します:

よくある誤解

Python や Node のようにすでに HTTP/1.1 を使用しているクライアントの場合、http に切り替えても節約できるのは1回の TLS ハンドシェイク(1秒にも満たない時間)だけです。これは数十秒かかる画像生成の時間と比べれば無視できる程度であり、暗号化も失われてしまいます。
いいえ。HTTP/2 はクライアント側で無効化します(上記の Go の例を参照してください)。他の言語にも同様の設定があります。その後も https://api.apiyi.com を使用し続ければ、暗号化された HTTP/1.1 を利用できます。
いいえ。リクエストが小さく数が多いブラウザや通常のテキストチャットでは、HTTP/2 の接続再利用によってリソースが節約されます。単一の多重化接続がボトルネックになるのは、高い同時実行数と大きなリクエストまたはレスポンスボディが組み合わさった場合のみです。

関連ドキュメント