Обновите параметр запроса Node.js - PullRequest
0 голосов
/ 16 октября 2019

используя Node.js / Express. Я определяю путь, передавая запрос и ответ.

Я всегда хочу включить параметр исходного URL-адреса, когда этот путь будет найден, поэтому я установил для этого параметра исходного запроса значение 0 и перенаправил URL-адрес.

Что я хочу сделать дальше - это рандомизировать этот параметр с каждым запросом / ответом и обновлять URL-адрес на основе дополнительного другого URL-параметра, в данном случае random=true.

Маршрут по умолчанию должен выглядеть как localhost:3000/default?seed=0

Маршрут, если используется параметр random=true, может выглядеть как localhost:3000/default?seed=456&random=true, где начальное число обновляется при каждом запросе.

Мой код (server.js с использованием модулей express, canvas и url):

`app.get("/default", (req, res) => { 

 //some logic to generate random numbers for the seed parameter
 let seed = Math.round(Math.ceil(Math.random() * parseInt(req.query.seed + 1) * 100))

 // if we hit the path and no seed param is defined always give it zero
 if(!req.query.seed) { 
    req.query.seed = 0; 

    res.redirect(url.format({ // redirect the url with the new param 
      pathname: '/canvas',
      query: req.query
    }))
 }

 //if we hit the path and the random param is set to true and there is a seed parameter
 if(req.query.random === 'true' && req.query.seed) {
   req.query.seed = seed; // use randomized seed as the new seed param value

   res.redirect(url.format({ // redirect to the url with the updated seed
      pathname: '/canvas',
      query: req.query
   }))

   //render our response
   canvas(req, res);
});`

Что я вижу: URL-адрес обновляется. Я получаю такие результаты, как:

/default?seed=115&random=true, /default?seed=21457&random=true, etc

Однако мой холст не рендерится, и в браузере возникает ошибка слишком большого числа перенаправлений localhost redirected you too many times.

Я не очень хорошо разбираюсь в концепциях перенаправленияв узле, но был бы признателен, если бы кто-то мог указать мне правильное направление, чтобы это больше не было ошибкой. Спасибо

1 Ответ

0 голосов
/ 16 октября 2019

Ваша проблема в том, что вы бесконечно перенаправляете. Когда пользователь достигает /default, вы создаете параметры запроса ... и перенаправляете их обратно на /default с параметрами запроса, где вы затем снова обновляете параметры запроса и отправляете их на /default навсегда. Ваш браузер обнаруживает, что вы попали в бесконечный цикл, и выводит вас из строя из-за ошибки «слишком много перенаправлений». Вам нужно условие перерыва вокруг вашего перенаправления.

Может быть

if(!res.query){
   res.redirect(url.format({ // redirect to the url with the updated seed
      pathname: '/canvas',
      query: req.query
   }))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...