問題タブ [gorilla]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - ハンドラーに引数を渡す方法
グローバル オブジェクトではなく、データベース オブジェクトをハンドラーに渡そうとしています。しかし、これが可能かどうかはわかりません.Gorilla Muxパッケージを使用しています.2番目のパラメータとしてクロージャが必要であることがわかります.
次に、使用できるパラメーターを定義します。理想的には、このような3番目のパラメーターが必要です。
回避策はありますか? または、グローバル db オブジェクトが必要ですか? Go は初めてなので、考えられる答えを詳しく説明してください。
go - Angular.js を使用して Gorilla Mux ルーティングを使用する
ルーティングを正しく取得できないようです。私はGorilla Muxを使用しており、Angularアプリを提供しようとしているため、基本的には「/ foo」で始まるURL以外のすべてのURLからindex.htmlを提供しています。
これは機能します:
しかし、この PathPrefix("/{blaah}/{blaah}/") のように、可能なすべてのルートを明示的に宣言するよりも簡単な方法があるはずです...これを使用すると、/{blaah}/{blaah 以外の URL }/ は、index.html の代わりに 404 page not found を返します。
したがって、見つかった限りすべて (静的ファイルなど) を提供したいと思いますが、それ以外はすべて /public/index.html を返す必要があります。
go - Go と Gorilla Mux の NotFoundHandler が機能しない
この NotFoundHandler を機能させることができません。静的ファイルが存在する場合はすべての取得要求で静的ファイルを提供したいと思います。それ以外の場合は index.html を提供します。現時点での私の単純化されたルーターは次のとおりです。
/fooは正常に動作します
/file-that-existsは正常に動作します
/file-that-doesnt-exist が機能しない - index.html の代わりに 404 page not found が表示される
それで、私はここで何が間違っていますか?
google-app-engine - Gorilla mux サブドメイン
gorilla mux を使用してサブドメインを追加し、次のようなことを行うにはどうすればよいですか。
私が試してみました
しかし、App Engine にアップロードするたびにドメインを変更する必要があるため、ドメインを渡したくありません。さらに、上記のコードは App Engine フレームワークを使用すると機能しないと思います。
go - 内部ハンドラーからの Gorilla Mux ルーターが 1 回しか機能せず、404 ページが見つからないというメッセージが表示される
ゴリラmuxをルーターとして使用していますが、非常に奇妙な動作をしています。サーバーへの最初の要求で、有効な応答が得られます。しかし、その後のリクエストでは、404 page not found. コンソールにエラーはありません。
私のコードは非常に簡単です (コピーして貼り付けてすぐにテストできます)。
いくつかのコードのコメントとテストの後、次の行が原因のようです:
現在のリクエストを使用してハンドラー内のルーターを取得するこの方法は、別の StackOverflow 投稿から来ています: How to call a route by its name from inside a handler?
しかし、奇妙な理由で、それは一度しか機能しません:
ご覧のとおり、コンソールにエラーはありません。
誰かがなぜ一度しか機能しないのか考えていますか?
go - サブフォルダ内の別のファイルにゴリラマルチプレクサルート?
非常に単純な Go Web アプリケーションを構築しようとしていますが、golang の「パッケージごとのフォルダー」構造が問題になっています。
github.com/gorilla/muxルーターとして、およびgithub.com/unrolled/renderテンプレートのレンダリングに使用しています。つまり、アプリの起動時に新しいルーターと新しいレンダラーを作成する必要があり、レンダラーにアクセスするにはすべてのルートが必要です。
これは、単一のファイルで行うのが非常に簡単です。
}
しかし、これは私がGoを理解していないところです。サブフォルダー内の個別のファイルにルートが必要なため (私のプロジェクトは大きくなります)、routesパッケージに含める必要があります。もちろん、これによりレンダラー変数にアクセスできなくなります。呼び出しは、テンプレート フォルダーやアセット パスのヘルパーなど、大量のアプリ固有のものを渡すことに依存しているroutesため、パッケージ内にレンダラーを作成することはできません。render.New()
ハンドラー関数を、既に初期化されたレンダラーを持つ構造体で機能させるというルートをたどりました...
しかし、 で初期化されたときにパッケージapp *App内でこれにアクセスする方法については、まだ混乱しています。ファイルのフラットなリストがあれば、Go のすべてが非常に簡単に見えますが、フォルダー構造が少し必要になるとすぐに、パッケージのセットアップが問題になります。routesmain
ここにはおそらく何かが欠けているので、助けていただければ幸いです。
go - ヘッダーが既に設定されている場合、カスタム http ハンドラー/ミドルウェアを使用する方法は?
次のような追加機能を提供するために、go で HTTP ハンドラーをチェーンしようとしています。
問題は、ゴリラ/マルチプレクサールーターが指すコントローラーの 1 つによって HTTP ヘッダーが既に設定されている場合 (たとえば、w.WriteHeader(404)または圧縮ハンドラ. どこかでエラーをキャッチするのを忘れていない限り、エラーは表示されませんが、ブラウザーは無効な応答を受け取ります。w.Header().Set("Content-Type", "application/json")
ヘッダーをどこかに隠してから、最終ハンドラーにそれらを書き込む以外に、これに対処する適切な方法はありますか? それはハンドラーのコードを書き直すことを意味するように思えますが、これはできれば避けたいと思っています。