我決定將我的代碼從 Express 移植到 Fastify。因此,當我們沒有設定適當的測驗時,這是一個非常令人頭疼的問題。
無論如何,該路線被宣告為:
fastify.get(/^\/(donations|skills|blogs)/, async function (req, reply) {
它在 Express 中作業,但在 Fastify 中回傳 404。我確信它與正則運算式本身有關,因為同一插件/檔案/中的其他路由作業正常。
在將整個路由插件附加到應用程式時,它應該匹配/listings/donations或listings/skills......知道這/listings是前綴。
正則運算式作業
uj5u.com熱心網友回復:
要回復你的答案,你不能向 Fastify 提供 RegExp 物件。您需要在 RegExp 中設定路徑引數:
const fastify = require('fastify')({ logger: true })
const handler = async (request, reply) => {
return { hello: request.params.foo }
}
fastify.get('/listings/:foo(^(donations|skills|blogs)$)', handler)
fastify.listen(8080)
(我認為您的設定應該出錯,所以我打開了一個問題)
作為一個建議,你不應該這樣做:你會遇到這個正則運算式的性能下降原因。我建議你這樣寫:
fastify.get('/listings/donations)', handler)
fastify.get('/listings/skills)', handler)
fastify.get('/listings/blogs', handler)
讓路由器完成它的作業。
下面是性能對比:
使用正則運算式
┌───────────┬─────────┬─────────┬─────────┬─────────┬──────────┬─────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼─────────┼─────────┤
│ Req/Sec │ 68863 │ 68863 │ 75327 │ 75839 │ 73678.55 │ 2791.45 │ 68860 │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼─────────┼─────────┤
│ Bytes/Sec │ 12.5 MB │ 12.5 MB │ 13.7 MB │ 13.8 MB │ 13.4 MB │ 507 kB │ 12.5 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴──────────┴─────────┴─────────┘
沒有正則運算式
┌───────────┬─────────┬─────────┬─────────┬─────────┬──────────┬─────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼─────────┼─────────┤
│ Req/Sec │ 86015 │ 86015 │ 95423 │ 95551 │ 94350.55 │ 2681.36 │ 85954 │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼─────────┼─────────┤
│ Bytes/Sec │ 15.6 MB │ 15.6 MB │ 17.4 MB │ 17.4 MB │ 17.2 MB │ 491 kB │ 15.6 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴──────────┴─────────┴─────────┘
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/420839.html
標籤:
上一篇:長度為偶數的單詞的正則運算式
下一篇:正則運算式掃描檔案以獲取特定內容
