簡潔な回答
いいえ。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は動作する?)、または信頼できる内部ネットワークや専用線内でのみ、一時的な回避策として使用してください。
GoクライアントをHTTP/1.1に切り替える方法
コードを変更しない方法として、プロセスに環境変数を設定する方法があります。これはnew-apiやone-apiなどの既存のゲートウェイプログラムに適しています:Transport.TLSNextProtoに非nilの空マップを設定します:
よくある誤解
http:// の方が速いですか?
http:// の方が速いですか?
Python や Node のようにすでに HTTP/1.1 を使用しているクライアントの場合、http に切り替えても節約できるのは1回の TLS ハンドシェイク(1秒にも満たない時間)だけです。これは数十秒かかる画像生成の時間と比べれば無視できる程度であり、暗号化も失われてしまいます。
HTTP/2 を無効にするには http:// に切り替える必要がありますか?
HTTP/2 を無効にするには http:// に切り替える必要がありますか?
いいえ。HTTP/2 はクライアント側で無効化します(上記の Go の例を参照してください)。他の言語にも同様の設定があります。その後も
https://api.apiyi.com を使用し続ければ、暗号化された HTTP/1.1 を利用できます。HTTP/2 は悪いものですか?
HTTP/2 は悪いものですか?
いいえ。リクエストが小さく数が多いブラウザや通常のテキストチャットでは、HTTP/2 の接続再利用によってリソースが節約されます。単一の多重化接続がボトルネックになるのは、高い同時実行数と大きなリクエストまたはレスポンスボディが組み合わさった場合のみです。