簡體   English   中英

異常調用以表達get方法。 應該錯了,但是運行良好

[英]Unusual call to express get method. Should be wrong but runs well

Express的get方法只記錄了兩種調用,但是在passportjs.org的文檔中顯示為第三種調用。

我正在學習使用Google的Oauth 2.0策略實施SSO。 在此期間,我遇到了app.get方法的異常用法。 Express的文檔中未定義此類函數調用。

我參考了以下兩頁,以確保我沒有記錯:

  1. Express JS文檔app.get方法
  2. 適用於app.get方法的Passport JS文檔

Express js文檔只有兩種調用:

1. app.get(name)
2. app.get(path, callback [, callback ...])

現在,passwordjs.org中的調用似乎使用的是第二種形式,但是請注意,第二個參數(passport.authenticate)實際上是函數調用,而不是函數定義(即回調),因為它應該按照上面的#2進行:

app.get('/auth/google',
  passport.authenticate('google', { scope: 'https://www.google.com/m8/feeds' });

我預計會出現運行時錯誤,因為對app.get的調用與任何已記錄的函數調用類型都不匹配。 但是,函數調用運行良好,可以完成預期的任務。 怎么樣?

Passport npm頁面

Passport是Node.js的Express兼容身份驗證中間件

這是passport工作方式,它公開了與表達期望的callback兼容的方法。

表達期望的最簡單的callback簽名是:

(req, res) => { /* something */ }

因此,任何返回期望簽名的另一個函數的函數都可以作為中間件傳遞。

例如

const app = express()

function myFunc(some) {
  return (req, res) => {
    res.json(some);
  }
}

app.get('/', myFunc('something'));

* Express文檔還在上面的鏈接中的可配置中間件下說明了類似的中間件功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM