私たちが作業しているウェブサイトには、ダウンロードリンクがあります。このリンクはユーザーに提供する必要があります。ただし、URLを取得するときに、サーバーはJSONでエラーメッセージを表示するか(適切なヘッダーと適切なhttpステータスコードが設定されます)、またはファイルを提供することができます。大きなファイルをダウンロードするか、エラーを表示します
現在、私たちはこのファイルをダウンロードするためにiframeを使用していますが、これによりエラーメッセージは表示されません。これは原則的には可能ですが、クロスドメインではできませんし、ブラウザ間でエラーデータの読み方が異なるように見えます(ブラウザがjsonをHTMLと解釈し、HTMLタグとしてHTMLタグを作成するので)。
I xmlhttprequest2を使用してファイルをダウンロードしてユーザーに提供することを検討しましたが、ダウンロードされたファイルは大きくなる可能性があるため、ユーザーにストリーミングする必要があります。
したがって、私はファイルをダウンロードするか、httpステータスコードに応じてエラーメッセージを読む方法を探しています。私は私の希望にAPIを変更することができるよ
APIのセットアップ
は、しかし、APIは、公開APIになるように設計されており、RESTのAPIとして設計されています。これは、APIができるだけシンプルに保たれるべきであり、特定のクライアント側のコードを動作させるための回避策が、他のクライアント側のために(つまり、APIとクライアント側のコードが分離されていないように)
ダウンロードされているファイルは、サーバー上で暗号化されており、URLに記載された情報でのみ解読できます。したがって、チャンクを抽出すると、サーバーがファイル全体を復号化する必要があるため、チャンク転送は困難です。
サーバーの応答を制御できますか?エラーコードとエラーメッセージ、または成功コードとファイルURLのいずれかに応答を変更できますか?もしそうなら、あなたはajax呼び出しを行い、成功すればurlにリダイレクトできます。これで問題が解決しない場合は、セットアップがどうしたらこの問題を回避できるか説明してください。 – TinMonkey
'MIME'形式のファイルはどのようなものでしょうか? – guest271314
@TinMonkeyはい、あります。しかし、一般的に、エラーは例外で、私はむしろ1つのリクエストをしたいと思っていますが、私はちょうど以下に説明するHEADアプローチを使って実装を始めました。それはREST APIにも関係しているので、そのようなリダイレクトは実際にはデザインには適合しませんが、もちろんHEADのアプローチは:)。 – user23127