Как обрабатывать пустые параметры маршрута в express - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь обработать пустой параметр маршрута, если путь не указан, я хотел бы вернуть новую дату, если параметр маршрута пуст. Пока сервер отвечает следующим образом: Cannot GET / api / timestamp /

app.get("/api/timestamp/:date_string", function(req,res){

let dateString=req.params.date_string
 if(!req.params.date_string){
    dateString=new Date()
    res.json({"unix": dateString.getTime(), "utc" : dateString.toUTCString()})
  }  

})

В настоящее время сервер не отвечает json новой датой, как ожидалось, кто-нибудь знает, как поймать пустой параметр маршрута?

Ответы [ 3 ]

3 голосов
/ 06 мая 2020

Express использует путь к регулярному выражению, поэтому вы можете проверить эту документацию здесь: https://www.npmjs.com/package/path-to-regexp#optional

Вы можете поставить вопросительный знак в конце параметров, чтобы сделать их необязательные параметры, например так ... / timestamp /: date_string?

1 голос
/ 06 мая 2020

В вашем случае вы просто используете:

app.get("/api/timestamp/:date_string?", function(req,res){

let dateString=req.params.date_string
 if(!req.params.date_string){
    dateString=new Date()
  }  
  res.json({"unix": dateString.getTime(), "utc" : dateString.toUTCString()})
})

Вы можете просто проверить, существует ли какая-либо переменная или значение,

if(variable){
   // this condition executed only when the variable has value.
}

if (переменная) возвращает истину, когда передающая переменная не

  • Undefined
  • null
  • NaN

AND

он также имеет некоторое значение

1 голос
/ 06 мая 2020

У вас хорошо получается проверить, существует ли ваш параметр. Но ваш ответ есть только в этом блоке if. Я вынес его из блока if, чтобы вы всегда отправляли ответ. Ной, только если req.params.date_string не существует.

Изменить: я добавил, кроме того, знак вопроса, чтобы указать, что ваш параметр URL является необязательным, как указано в ответе Джастина.

app.get("/api/timestamp/:date_string?", function(req,res){
let dateString=req.params.date_string
 if(!req.params.date_string){
    dateString=new Date()
  }  
  res.json({"unix": dateString.getTime(), "utc" : dateString.toUTCString()})
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...