問題タブ [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 - Golang Gorilla mux、2 つの URL 署名と照合する最良の方法
gorilla mux を使用すると、現在、次の形式の URL が多数あります。
domain.com/org/{サブドメイン}/{名前}/ページ名
コードは次のようになります。
私も対戦したい:
subdomain.domain.com/{名前}/ページ名
私は次のようなことができることを知っています
サブドメインで一致します。両方のタイプの URL に一致する HandleFunc() を 1 つだけ持つことは可能ですか?それとも、最初のケース用と subdomain.domain.com ケース用の 2 つの HandleFunc() を持つ必要がありますか?
angularjs - AngularJS ページがサーバーから更新されない
AngularJS アプリがあります。サーバー側は Go で、Gorilla Web Toolkit の mux とセッション パッケージを使用します。Angular アプリのメイン ページには、サインインとサインアップの 2 つのフォームがあります。データは、AngularJS$http.postを JSON として使用して Go に送信され、適切な応答がサーバーから JSON として返されます。私が達成したいのは、ユーザーがログインしているかどうかに応じて、Web サイトのメイン ページに 2 つの異なるページを表示することです。現在、サインイン フォームの詳細を送信し、サーバーが適切な応答で応答すると、ページをリロードしますが、AngularJS は新しいページではなく、フォームを含むページを表示し続けます。
AngularJS コード
関連する Go コード 以下では、SignInHandler が "/signIn" への POST で呼び出され、IndexHandler が "/" への Get で呼び出されます。
go - AppHandler をルートに追加するにはどうすればよいですか?
Go ブログ: エラー処理と GoappHandlerで説明されているように実装しようとしています。私は を持っています。今はそれを自分のルートに接続しようとしています。以下の作品:appHandler
しかし、「StrictSlash(true)」を持つだけでなく、GET リクエストを許可できるようにしたいと考えています。私は持っている:
AppHandler は次のようになります。
エラーが発生します:
go - ネグローニとゴリラのコンテキスト ClearHandler
アリスのミドルウェアとして使用されているのを見たように、ネグローニのミドルウェアとしてゴリラ を使用することは可能ですか? context.ClearHandler()何かのようなもの:
現時点ではcontext.Clear(r)、すべての応答後に電話をかけていますが、片付けが自動的に処理されることを望みます。現在、次のエラーが発生しています。
しかし、エラーメッセージが何を伝えているのかわかりません。
go - httputil.ReverseProxy を使用すると、mux.Vars が空になります
gorilla mux と httputil.ReverseProxy を一緒に使用しようとしていますが、mux.Vars を取得しようとすると空になります。https://golang.org/src/net/http/httputil/reverseproxy.go?s=2744:2819#L93によると、http.Request ポインタは元のリクエストの浅いコピーであり、引き続き機能するはずです.
何か案は?
concurrency - go context.Context の正しい使い方
Build You Own Web Framework In Goという記事を読んだところです。ハンドラー間で値を共有するためにcontext.Contextを選択し、次の方法でそれを使用して、ハンドラーとミドルウェア間で値を共有しています。
すべてが機能しており、ゴリラ/コンテキストを使用するよりもハンドラーの読み込みが高速です。私の質問は次のとおりです。
- このアプローチは安全ですか?
- 私がやっているように c.cancel() 関数を延期することは本当に必要ですか?
- 構造体などのコントローラーを使用してモデルと値を共有することで、カスタム Web フレームワークを実装するために使用できますか?
templates - Go テンプレート - オブジェクト ストア / データベースからの読み込み
node.js から Go への顧客固有のテンプレート (テーマ) をサポートするアプリを再構築しています。
現在、renderを使用してテンプレート ファイルをレンダリングしていますが、実際に必要なのは、Cloudfiles などのオブジェクト ストアに格納されているテンプレートにアクセスすることです。
node.js ではこれをエクスプレスで行い、render()メソッドをオーバーライドしていますが、Go でこれを行う方法を理解できませんでした。
私は本質的に次のようなことをする必要があります:
必要に応じて次のようなことを行うことで、サブテンプレートを動的に含めることができます: http://play.golang.org/p/7BCPHdKRi2しかし、正直なところ、それは素晴らしい方法とは思えません。
これに対する解決策を探しましたが、障害物にぶつかり続けています。アドバイス/支援は素晴らしいでしょう。
編集:
本質的に、私は次のことを求めています。
- リクエストごとにデータストアから特定のテンプレートをロードする方法を教えてください。
- それをクライアントへの応答として送信するにはどうすればよいですか
go - ゴリラマルチプレクサにコンテキストを渡す - イディオムに行く
私はかなりgolangが初めてで、慣用的にこれを行うための最良の方法を見つけようとしています。
静的に定義して渡すルートの配列がありgorilla/muxます。リクエストのタイミングを合わせてパニックを処理するために、各ハンドラー関数をラップしています(主に、ラップがどのように機能するかを理解できるようにするためです)。
それぞれが「コンテキスト」にアクセスできるようにしたい-httpサーバーごとに1つになる構造体。これには、データベースハンドル、構成などが含まれる可能性があります。私がしたくないことは静的グローバル変数を使用します。
私が現在行っている方法では、ラッパーにコンテキスト構造へのアクセスを許可できますが、これを実際のハンドラーに取得する方法がわかりませんhttp.HandlerFunc. 私にできることhttp.HandlerFuncは、受信機である自分自身のタイプに変換することだと思いました(ラッパーについても同様に行いますが、(多くのことを遊んだ後)これを受け入れるContextことができませんでした.Handler()
ここで明らかな何かが欠けていると思わずにはいられません。以下のコード。
これを行う方法は次のとおりですが、かなり恐ろしいようです。おそらく (?) をサブクラス化するために、もっと良い方法があるに違いないと思いますhttp.Handler。