ホームページ >バックエンド開発 >Golang >Go julienschmidt/httprouter でルーターをネストする方法は?

Go julienschmidt/httprouter でルーターをネストする方法は?

王林
王林転載
2024-02-08 23:24:25882ブラウズ

如何在 Go julienschmidt/httprouter 中嵌套路由器?

php Xiaobian Yuzai は、Go 言語で julienschmidt/httprouter ネストされたルーターを使用するための簡潔なガイドを提供します。 julienschmidt/httprouter は、ルーティングをより適切に整理および管理するのに役立つ軽量で高性能の HTTP リクエスト ルーターです。この記事では、Go 言語で julienschmidt/httprouter を使用して、ネストされたルーターの機能を実装し、複雑なルーティング要件をより適切に満たす方法を詳しく紹介します。この記事では、初心者でも経験豊富な開発者でも、ネストされたルーターの使用を簡単にマスターできるようにするためのわかりやすい手順とサンプル コードを提供します。始めましょう!

質問の内容

自分のサービスから次の URL を公開したいです:

リーリー

また、これを別のルーター内にネストされたルーターとして構造化したいと考えています。最上位ルーターは、すべてのリクエストを /api に照合し、リクエストを /foo および /bar リクエストに照合するネストされたルーターを使用して処理します。基本的には名前空間です。

ルーターを 1 つだけ使用し、両方のルートに /api プレフィックスを指定できます:

リーリー

しかし、/api プレフィックス内のすべてのルートに単一のルーターを使用して、単一の関数呼び出しで適切なミドルウェアを追加できるようにしたいと考えています。

これが私が試したことです:

リーリー

ただし、http://localhost:8080/api/foo または http://localhost:8080/api/bar にアクセスすると 404 が見つかりません

ルーターは http.handler インターフェイスを実装しているため、ネストされたルーターは機能すると思いました。私は何を取りこぼしたか?

回避策

httprouter はパスを連結しないため、それはできません。どちらのルーターも単純にリクエスト パスを検査し、それに応じて動作します。

それを実現する可能性のある 7 年前の パブリック プル リクエスト があります。そこを見て、同様のロジックを自分で実装し、接続パスに基づいて PR することができます。おそらく、これのために小さなヘルパー関数を書くことができます。

ルーター パッケージを切り替える場合は、ルーター グループをサポートする chi などの代替案を検討してください。

以上がGo julienschmidt/httprouter でルーターをネストする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。