如何在路由参数中使用斜杠

时间:2015-09-05 14:59:42

标签: javascript node.js rest url express

我有一个GET REST服务需要接受带有/

的参数

网址=" / term /:term / amount /:amount" 其中:term可以是" para / 5MG"等字符串。

有没有办法在快递中做到这一点?当我的api被使用时,我宁愿不用queryparams重写它。

2 个答案:

答案 0 :(得分:1)

本地,表达尝试在/分割,因此您必须手动分割。这是一个这样做的例子:

app.get('/term/\\S+/amount/:amount', function (req, res, next){
  var match;
  if(match = req.path.match(/^\/term\/(.*?)\/amount\/(.*)$/)){
    var term = match[1];
    var amount = req.params.amount;
    // or do whatever you like

    res.json({term: term, amount: amount})
  }else{
    res.sendStatus(404);
  }
})

这种方法会让你失去很多内在的魔力。首先对参数进行URI编码可能会更好。 (像这样:term/para%2F5MG/amount/3

答案 1 :(得分:0)

var _persons = [
  {
    name: 'John'
  },
  {
    name: 'Sarah'
  }
];

function Person(person){
  this.person = person;
}

Person.prototype.greeting = function(){
  return 'hello ' + this.person.name;
};

var persons = [];
function createPersons(people){
  for(var i = 0;i<people.length;i++){
    var person = new Person(people[i]).person;
    persons.push(person);
  }
};

createPersons(_persons);

console.log(persons[0].name); // logs 'John'
document.write('John');