【问题标题】:How to retrieve an URL from the route using @Param如何使用@Param 从路由中检索 URL
【发布时间】:2019-07-20 13:45:21
【问题描述】:

我正在编写一个图像处理器代理,类似于imageproxy,但使用的是 NestJS。

我想像这样声明一个端点:GET /api/trim/http://your.image.url 其中http://your.image.url 是我要转换的图像的 URL。

在我的控制器中,我会做这样的事情:

@Get('trim/:imageUrl')
  async trimCanvas(
    @Param('imageUrl') imageUrl: string,
  ): Promise<any> {
    console.log(imageUrl);
    return 'OK';
  }

但是,如果我提出请求,控制器永远不会被击中,相反,我会得到一个默认的 404。关于如何使它工作的任何想法?

【问题讨论】:

    标签: javascript node.js typescript express nestjs


    【解决方案1】:

    默认情况下,url 参数不会捕获斜杠。您可以在 route param 的括号中附加一个正则表达式来更改此行为。将通配符* 添加到您的参数中,以便它也接受/

    @Get('trim/:imageUrl(*)')
    

    codesandbox 中尝试一下。

    【讨论】:

    • 我试过这个解决方案,但它不起作用,原因是:UnhandledPromiseRejectionWarning: SyntaxError: Invalid regular expression: /(*)/: Nothing to repeat
    • 奇怪,它对我有用。你用的是什么快递版本?
    • 您可以在此处尝试运行示例:codesandbox.io/s/…
    • 不,不能让它工作,我不明白为什么......最后,考虑到资源关系,我最终改变了我的 API 的设计,所以我能够使用查询参数实现相同...
    猜你喜欢
    • 2016-06-14
    • 2016-03-02
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2020-12-20
    • 2012-01-30
    • 2015-11-15
    • 2017-07-14
    相关资源
    最近更新 更多