Как получить URL-адрес из маршрута с помощью @Param

Я пишу прокси-сервер для обработки изображений, аналогичный 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 по умолчанию. Есть идеи, как заставить это работать?


person Jorge    schedule 26.02.2019    source источник


Ответы (1)


По умолчанию косая черта не будет захвачена параметром URL. Вы можете добавить регулярное выражение в скобках к вашему параметру маршрута, чтобы изменить это поведение. Добавьте в параметр подстановочный знак *, чтобы он также принимал /:

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

Попробуйте это в этом коды и песочница.

person Kim Kern    schedule 26.02.2019
comment
Я попробовал это решение, но оно не работает из-за: UnhandledPromiseRejectionWarning: SyntaxError: Invalid regular expression: /(*)/: Nothing to repeat - person Jorge; 27.02.2019
comment
Странно, у меня работает. Какую экспресс-версию вы используете? - person Kim Kern; 27.02.2019
comment
Вы можете попробовать работающий пример здесь: codesandbox.io/s/ - person Kim Kern; 27.02.2019
comment
Нет, я не мог заставить это работать, и я не понимаю, почему... в конце концов, учитывая отношения ресурсов, я все же изменил дизайн своего API, поэтому я смог добиться того же с параметрами запроса. . - person Jorge; 11.03.2019