我目前正在开发一个带有GCP云函数(nodejs(的无服务器应用程序。在下面的代码中,我可以根据请求的方法来分离行为,但是我不知道如何获取路径参数的id。
例如,如果我想检索一个用户,路径将是/users/:id。我想检索路径中的id并搜索DB,但我被卡住了,因为我无法检索id。(PUT和DELETE也是(有人知道这件事吗?
我以为我可以用req.params.id得到它,但我想不行。。。。
import type {HttpFunction} from '@google-cloud/functions-framework/build/src/functions';
export const httpServer: HttpFunction = (req, res) => {
const path = req.path;
switch(path) {
case '/users' :
handleUsers(req, res);
break;
default:
res.status(200).send('Server is working');
}
};
const handleUsers: HttpFunction = (req, res) => {
if (req.method === 'GET') {
res.status(200).send('Listing users...');
} else if (req.method === 'POST') {
res.status(201).send('Creating User...')
} else if (req.method === 'PUT') {
res.status(201).send('Updating User...')
} else if (req.method === 'DELETE') {
res.status(201).send('Delating User...')
} else {
res.status(404);
}
}
export const helloWorld: HttpFunction = (req, res) => {
res.send('Hello, World');
};
还有一个问题。
例如,如果路径为",则不会调用handleUsers/用户/1";在目前的swich声明中。所以我们也想解决这个问题。
此外,在未来,可能会出现类似"/用户/1/猪舍"。。。。
您需要使用request
的Expressparams
属性,但必须注意文档中详细说明的以下选项:当路由定义使用正则表达式时,"使用req.params[n]
在阵列中提供捕获组,其中n
是第n个捕获组";。
因此,以下内容应该有效:
req.params[0]
req.params
实际返回{ '0': '...' }