Gin で重複するワイルドカード ルートが競合する
特定のルートとワイルドカード ルートを組み合わせて Jin プログラムを実装しようとすると、デフォルト ルーターが衝突に遭遇する。この競合の例としては、次のものが挙げられます。
<code class="go">r.GET("/special", ...) // Serves a specific resource. r.Any("/*", ...) // Attempts to serve a default resource for all others.</code>
panic: wildcard route '*' conflicts with existing children in path '/*'
この競合は、ワイルドカード ルート (/*) が /special などの既存の子ルートをオーバーライドしようとするために発生します。
競合の解決
gin.NoRoute(...) 関数は、この問題の解決策を提供します。これにより、ルーター内に他に一致するルートが見つからない場合にのみ実行されるルートを定義できます。
<code class="go">r.GET("/special", func(c *gin.Context) { // Serve the special resource... r.NoRoute(func(c *gin.Context) { // Serve the default resource...</code>
このアプローチにより、/special は常に特定のルートによって処理され、他の非一致ルートによって処理されることが保証されます。 - 固有のルートはデフォルトのリソースに誘導されます。
追加の考慮事項
https://stackoverflow.com/a/32444263/ のスタック オーバーフローのディスカッションを参照してください。この解決策の詳細については、244128 をご覧ください。
以上がJin で重複するワイルドカード ルートの競合を回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。