Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ZEIT Now无服务器功能-带参数的路由_Javascript_Express_Routes_Serverless_Vercel - Fatal编程技术网

Javascript ZEIT Now无服务器功能-带参数的路由

Javascript ZEIT Now无服务器功能-带参数的路由,javascript,express,routes,serverless,vercel,Javascript,Express,Routes,Serverless,Vercel,我创建了4条无服务器路由 /api/列表获取 /空气污染指数/新增职位 /api/update/:id PUT /api/remove/:id DELETE 我将它们包含在api/now.json文件中,如下所示: {"src": "/api/list", "dest": "./list.js", "methods": ["GET"]}, {"src": "/api/add", "dest": "./add.js", "methods": ["POST"]}, {"src": "/api/upd

我创建了4条无服务器路由

/api/列表获取 /空气污染指数/新增职位 /api/update/:id PUT /api/remove/:id DELETE 我将它们包含在api/now.json文件中,如下所示:

{"src": "/api/list", "dest": "./list.js", "methods": ["GET"]},
{"src": "/api/add", "dest": "./add.js", "methods": ["POST"]},
{"src": "/api/update/*", "dest": "./update.js", "methods": ["PUT"]},
{"src": "/api/remove/*", "dest": "./remove.js", "methods": ["DELETE"]}
不使用参数的/api/list和/api/add路由正在工作,但是/api/update和/api/remove没有工作,因为我可能没有正确使用上面引用的now.json文件中api路径上的正则表达式

路由器的处理程序看起来是这样的,只有相关的路径

app.put('/api/update/:id', (req, res) => {
  ...
});
module.exports = app;
src是要匹配的传入请求路径,dest是应该执行的文件

这意味着您的前两个不需要任何路由,因为访问/api/list将执行文件/api/list.js中的函数,/api/add将执行/api/add.js

您可以在now.json文件中使用来定义类似于express模式的路由:

{
  "rewrites": [
    { "source": "/update/:id", "destination": "/api/update" },
    { "source": "/remove/:id", "destination": "/api/remove" }
  ]
}
/api/remove.js中的示例函数如下所示:

module.exports=req,res=>{ const{id}=req.query; res.send'Removing ID'+ID; }; 或者,您可以将文件命名为/api/remove/[id].js,这样就根本不需要定义重写配置。这就是所谓的

src是要匹配的传入请求路径,dest是应该执行的文件

这意味着您的前两个不需要任何路由,因为访问/api/list将执行文件/api/list.js中的函数,/api/add将执行/api/add.js

您可以在now.json文件中使用来定义类似于express模式的路由:

{
  "rewrites": [
    { "source": "/update/:id", "destination": "/api/update" },
    { "source": "/remove/:id", "destination": "/api/remove" }
  ]
}
/api/remove.js中的示例函数如下所示:

module.exports=req,res=>{ const{id}=req.query; res.send'Removing ID'+ID; };
或者,您可以将文件命名为/api/remove/[id].js,这样就根本不需要定义重写配置。这就是所谓的

是否重写支持方法?否。如果函数不支持请求的方法,则应返回HTTP 405状态。是否重写支持方法?否。如果函数不支持请求的方法,则应返回HTTP 405状态。