【问题标题】:how to use optional url parameters with NestjS如何在 NestjS 中使用可选的 url 参数
【发布时间】:2020-10-03 21:22:14
【问题描述】:

我正在尝试使用 Nestjs 库替换我们当前的后端服务, 但是,我想在 URL 中创建一个带有 2 个可选参数的路由,例如:

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

这意味着路线应该抓住:

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

我怎样才能做到这一点,我曾尝试使用? 和(),但效果不佳。

【问题讨论】:

    标签: node.js typescript express nestjs fastify


    【解决方案1】:

    路由器参数名称应该是唯一的。正确的路由路径是:

    现有一个是:

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

    更正:

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

    意见:如果参数是可选的,您可以使用查询参数。创建可选的参数路​​由绝不是一个好主意(同意的分歧)。两者的目的相同,但将它们作为查询参数使调试和其他开发人员更容易理解。

    【讨论】:

    • @Vinayak Sarawagi 你的方法很有意义。但为了服务用户的 url 可读性,有时值得保留更长的 url,但选择较短
    • 不适合我。不知道为什么会出现 404 错误。我的网址:resource1/:id1/resource2/:id2?
    • 想出了另一种方式,因为解决方案在 NestJS @Delete([ 'resource1/:id1/resource2/:id2', 'resource1/:id1/resource2' ]) 中使用了类似的东西
    【解决方案2】:

    如果您正在寻找如何注释可选查询参数,您可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 2021-02-10
      • 1970-01-01
      • 2019-08-29
      • 2011-11-03
      • 1970-01-01
      • 2014-10-28
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多