Как я могу получить полный URL в качестве параметра в маршруте

#node.js #ejs

#node.js #ejs

Вопрос:

Мне нужно получить полный URL в качестве параметра, чтобы преобразовать его в qrcode. Как только URL будет в этом формате https://website.com.br/2k , Я не могу получить его в качестве параметра в моем node.js маршрут

Вот как я отправляю параметр на страницу ejs

 res.render("tutorial.ejs", { qrcode: '/qrcode/'  link });
  

link что-то вроде: http://comp.co/32

В tutorial.ejs я визуализирую qrcode, вызывающий qrcode route

  <img src="<%= qrcode %>">
  

qrcode маршрут:

 routes.get('/qrcode/:url',(req,res, next) => {    
    const code = qr.image(req.params.url, {type: 'svg'});
    res.type('svg');
    code.pipe(res);
})
  

Это не работает. Я думаю, это происходит потому, что мой маршрут qrcode получает что-то вроде этого в качестве параметра: http://comp.co/32

Комментарии:

1. Вы пробовали req.originalUrl ?

2. Что вы получаете, когда вы console.log(req.params.url) ?

3. @MoadEnnagi Я разместил это неправильно, это было просто qr.image (url, {type: ‘svg’});

Ответ №1:

когда вы делаете запрос get, вы в основном вызываете

 routes.get(/qrcode/http:/comp.co/32){...} 
  

таким образом, маршрутизатор в серверной части понимает это как маршрут, и он не будет вызывать ваш ожидаемый маршрут, т. Е.
routes.get(/qrcode/:url){...}

Решение:

URL закодируйте свой URL как и попробуйте свой код еще раз.

 var link="http://comp.co/32"
res.render("tutorial.ejs", { qrcode: '/qrcode/'  link });

<img src="<%= qrcode %>">

routes.get('/qrcode/:url',(req,res, next) => {    
    const code = qr.image(req.params.url, {type: 'svg'});
    res.type('svg');
    code.pipe(res);
})
  

Но лучший способ передать параметр — использовать запрос, чтобы избежать путаницы, вы можете сделать это

 res.render("tutorial.ejs", { qrcode: '/qrcode?url='  link });


routes.get('/qrcode',(req,res, next) => {    
    const code = qr.image(req.query.url, {type: 'svg'});
    res.type('svg');
    code.pipe(res);
})
  

Надеюсь, это решит вашу проблему.

Ответ №2:

Вы можете console.log (req) внутри вашего маршрута qrcode, чтобы посмотреть, какие данные вы можете получить из запроса.