0

小さな Martini ベースのアプリケーションを使用していますが、解決できない問題に直面しています。

HTTP ヘッダーにいくつかの変更を加えて、ユーザーが 3 番目のサーバーからファイルを取得できるようにするアプリケーション機能を追加したいと考えています。ある種のプロキシ。ファイルは非常に大きく (それぞれ 200+Mb)、これらのファイルをクライアントに「ストリーミング」したいと考えています。「ストリーム」とは、ファイル全体をディスクやメモリに保持することなく、最初のバイトがアプリケーションによって受信された直後にファイル データがクライアントに返されることを意味します。

Martini と Go でこれは可能ですか?

4

1 に答える 1

2

はい、Go では一般的に可能です。特に Martini には詳しくありません。リモート ファイルの呼び出しからの http 応答はインターフェイスを返し、Readerリクエスト ハンドラーにはWriterインターフェイスがあります。これは、データのストリームを読み取り、データのストリームを書き込むことができることを意味します。必要なものを操作し、転送されたストリームをリクエストストリームに「パッチ」することのみを責任とします。

GoReverseProxyには、標準ライブラリに組み込まれたユーティリティもあります。

http://golang.org/pkg/net/http/httputil/#ReverseProxy

必要に応じて、Martini と標準の http ライブラリを混在させることもできます。

[編集] martini のドキュメントを読むと、 standradライブラリにあるような生の http ハンドラを追加できます。つまり、実際にそれを行うことができます。

于 2014-03-09T15:14:29.840 に答える