私はHTTPAPIサーバー(サードパーティのアプリケーションによって呼び出されることを意図しており、必ずしもWebブラウザーによって呼び出される必要はありません)を開発しました。このサーバーはget
、name
要求されたファイル。どのファイルに関係なく、すべての呼び出しは、呼び出された私の同じカスタム要求ハンドラーで処理Get
されます(標準のHTTPと混同しないでくださいget
)。クエリ文字列には、name
取得する一意のファイルを識別するプロパティが含まれています。
したがって、リクエストは次のようになります。
http://MyServerURL.com/Get?Key=SomeAPIKeyForAuthentication&Name=SomeUniqueIdentifier
まず第一に、私は明らかに、たとえば、URIのみを使用してサーバーにファイルをフェッチさせることができることを知っています...
http://MyServerURL.com/SomeUniqueIdentifier?Key=SomeAPIKeyForAuthentication
...しかし、このデザインはこの1つのユニバーサルget
コマンドを使用することを特に意図しているため、クエリ文字列にこの一意の識別子を保持する必要があります。このAPIに接続する実際のアプリケーションは、このファイル名を知る必要はありませんが、誰かがブラウザで開いてファイルをダウンロードするためにURLが手動で提供される場合があります。
ただし、ファイルがWebブラウザーを介してダウンロードされる場合は常に、呼び出しがget
であるため、保存されたファイル名もになりますget
。
ダウンロードしたファイル名を単なる識別子ではなく一意の識別子にするためにサーバーに実装できるHTTPのトリックはありますget
か?たとえば、リダイレクトを使用するなどの方法はありますか?
TIdHTTPWebBrokerBridge
DelphiXE2のIndy10をWebサーバーとして使用しています。TWebModule
このコンポーネントがこのリクエストを処理するときに、このコンポーネント(技術的には対応するハンドラー)でget
、応答のファイル名を必要な文字列(この場合は)にする方法を探していますSomeUniqueIdentifier
。「URL書き換え」という言葉を聞いたことがありますが、それはかなり別のトピックであり、私が必要としているものではないと思いますが、それでもそうかもしれません。