【问题标题】:Making a REST API: How do I route a filepath using express for node制作 REST API:如何使用 express for node 路由文件路径
【发布时间】:2026-01-31 13:55:02
【问题描述】:
var express = require('express');

var app = express();
app.get('/files/:service/:op/:file', function(req, res){
  console.log(req.params.file)
})

app.listen(3000);

调用http://localhost:3000/files/farm/get/chicken 将记录chicken。 调用http://localhost:3000/files/farm/get/barn/yard/chicken 将记录barn

怎样才能发快递app.VERB(path, callback)path登录barn/yard/chicken

【问题讨论】:

    标签: api node.js rest routing express


    【解决方案1】:

    把你的路线改成这样:

    app.get('/files/:service/:op/*', function(req, res){
      console.dir(req.params);
      console.log(req.params[0]); // this is what you want
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('OK');
    
    });
    

    请注意最后一个参数是如何更改为 * 的,以便它接受单个值(如鸡)或多值(如谷仓/院子/鸡)。这里的问题是斜杠字符用于拆分 URL 组件,但您有时希望拆分值而不是其他值。 * 会自动将最后一组值(1 或多个)合并到单个元素中。

    http://expressjs.com/api.html#req.params

    【讨论】:

    • 完美。我不太清楚为什么路径是第零个参数,但它有效。 (我假设订单是[service,op,path] - 它不是)
    • 也不确定,但可能是因为命名参数 :service 和 :op 已映射到 req.params 对象内的属性。例如,您可以通过 req.params.service 和 req.params.op 访问它们
    【解决方案2】:

    试试这个:

    console.log(req.params.service + "/" + req.params.op + "/" + req.params.file);
    

    【讨论】: