Negroni を使用してスケーラブルなルート固有のミドルウェアを実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-24 08:18:30
オリジナル
803 人が閲覧しました

How to Implement Scalable Route-Specific Middleware with Negroni?

Negroni を使用したルート固有のミドルウェア: スケーラブルなアプローチ

Negroni と httprouter を使用した Web 開発では、ミドルウェアをさまざまな環境に選択的に適用する必要があります。ルートが頻繁に発生します。これを実現するには、ルート固有のミドルウェアの概念を理解する必要があります。

複数のルートを扱う場合、他のルートを除外しながら特定のルートに認証チェックを適用することは課題となります。これは、強力なリクエスト処理フレームワークである Negroni を使用する場合に特に当てはまります。これに関連して、ミドルウェアをルートに選択的に適用するためのスケーラブルなアプローチを検討します。

ルート固有のミドルウェアの実装

Negroni を使用してルート固有のミドルウェアを実装するには、次のようにします。複数の Negroni インスタンスを作成する機能を利用できます。この例では、authenticator.Get() に認証ミドルウェアがあり、これを「/」ルートにのみ適用します。

  1. ステップ 1: ルートごとに新しいルーター インスタンスを作成します。
<code class="go">router := httprouter.New()</code>
ログイン後にコピー
  1. ステップ 2: ルートごとに Negroni インスタンスを作成します。
<code class="go">loginHandler := negroni.New(negroni.HandlerFunc(loginHandler))
indexHandler := negroni.New(authenticator.Get(), negroni.HandlerFunc(indexHandler))</code>
ログイン後にコピー
  1. ステップ 3: ルートをルーターに追加します。対応する Negroni インスタンス。
<code class="go">router.Handler("GET", "/login", loginHandler)
router.Handler("GET", "/", indexHandler)</code>
ログイン後にコピー
  1. ステップ 4: サーバーを作成し、ルーターをハンドラーとして使用します。
<code class="go">server := negroni.Classic()
server.UseHandler(router)
server.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some secret"))))</code>
ログイン後にコピー

このアプローチでは、認証ミドルウェアを「/」ルートにのみ効果的に適用します。複数のパブリック ルートとプライベート ルートのスケーラビリティを実現するには、個別の Negroni インスタンスを作成し、それに応じてルーターに追加するだけです。

以上がNegroni を使用してスケーラブルなルート固有のミドルウェアを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!