網站搜尋

node.js - 如何在 NestJS 中使用可選的 URL 參數


我正在嘗試使用 Nestjs 庫來替換我們目前的後端服務,但我想在 URL 中創建一個帶有 2 個可選參數的路由,類似這樣:

/route/:param1/config/:OptionalParam3?/:OptionalParam3?

那表示路由應該捕捉:

  1. route/aa/config
  2. route/aa/config/bb
  3. route/aa/config/bb/cc

我該如何實現這個,我已經嘗試使用 ? 和 (),但效果不太好。

答案#1

如果你正在尋找如何標註一個可選的查詢參數,你可以這樣做:

@ApiQuery({
  name: "myParam",
  type: String,
  description: "A parameter. Optional",
  required: false
})
async myEndpoint(
  @Query("myParam") myParam?: string
): Promise<blah> { 
  [...] 
}

答案#2

路由器參數名稱應該是唯一的。正確的路由路徑是:

現有的是:

/route/:param1/config/:OptionalParam3?/:OptionalParam3?

更正:

/route/:param1/config/:OptionalParam3?/:OptionalParam4?

意見:如果查詢參數是可選的,你可以使用。建立可選參數路由從來不是好主意(雙方同意分歧)。兩者功能相同,但將它們作為查詢參數,讓除錯和其他開發者更容易理解。