あなたは間違いなくあなたのメインに500+ HandleFunc
を入れてはいけません。
まず、プロジェクトが大きくなるにつれて、おそらくモジュールとタイプを作成します。
main
からこれらのモジュールまたはタイプに委任して、各モジュールまたはタイプがハンドル自体を登録するようにすることができます。そのような場合は、一度だけそのパターンを登録する必要があり、その後、要求を処理する機能は、に基づいて動作することができる
"/articles/{id}"
:
また、おそらくあなたのURLの多くは、次のような、パターンに従いますパラメータ{id}
。
パターンを使用する場合はルーティングを管理するライブラリがいくつかありますが、独自のルーティングロジックをコーディングすることもできます。あなたがメインで、ルーティングを管理するためのChi
(https://github.com/pressly/chi)を使用して、どこ場合は行うことができ、例えば
Wildcards in the pattern for http.HandleFunc
:
はその問題について、いくつかの選択肢のためにこの質問を見てみましょう
r := chi.NewRouter()
r.Mount("/admin", adminRouter())
そしてあなたは/admin
の下で提供されますハンドラを作成しておくことadminRouter()
関数内:
func adminRouter() http.Handler {
r := chi.NewRouter()
r.Use(AdminOnly)
r.Get("/", adminIndex)
r.Get("/accounts", adminListAccounts)
return r
}
(このすべては、チーのドキュメントから取られる)
これは一例であり、あなたは別の方法を使用して、同様のロジックを実装することができます。
メインにはモジュールへのハンドラがあり、各モジュールの中にはさらに深く移動し、より深くナビゲートするハンドラを追加することができますか? –
はい、もっと具体的な例で私の答えを更新しました – eugenioy
別のフォルダとハンドラを、例えばPythonでdjangoのような特定の関数に移動させることができますか?それとも良いアプローチではありませんか?私は自分自身のロジックを使用してchis i wanttoを使用したくないので、 –