#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, чтобы посмотреть, какие данные вы можете получить из запроса.