首頁 > 後端開發 > Golang > 主體

如何使用 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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!