Как я могу получить полный URL в качестве параметра в маршруте - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно получить полный 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

 <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

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

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

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

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

Решение:

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

var link="http%3A%2F%2Fcomp.co%2F32"
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);
})

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

0 голосов
/ 05 апреля 2019

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

...