Amb*_* B. 8 google-cloud-platform google-cloud-functions
这个问题比我喜欢来这里的问题要简单一些,但是我一直在试图寻找答案,我绝对不能 -
Google Cloud Platform HTTP功能是否支持路由参数,如此处所示?http://expressjs.com/en/guide/routing.html#route-parameters
具体来说,我看到谷歌云平台HTTP功能似乎使用Express作为基础,但我看到的任何功能的所有功能都已经运行了req和res参数而没有别的.我可以访问正文中的数据,但这不允许我从路径中提取参数,例如在传递给"/ users /:userId/books /:bookId"的请求中查找书籍ID.我无法看到如何将它们填充到req.params中,而无法指定路径的哪个部分对应于此处的名称.
我知道我总是可以用另一种方式传递它们,但这更干净,更符合我们想要使用的设置,所以我真的希望尽可能让它工作.有没有办法做到这一点,我完全失踪或根本不支持?
Amb*_* B. 10
我能够联系支持小组,看起来是的,这是支持的 - 你只需要使用req.path来拉出完整路径,然后以某种方式解析它(我使用path-to -regexp)
示例代码:
exports.myFunction = function(req, res) {
var keys = [];
var re = pathToRegexp('/:paramA/:paramB/not-a-param/:paramC/also-not-a-param/:paramD?', keys, {strict: false});
var pathVars = re.exec(req.path);
if (pathVars) {
console.log(JSON.stringify(pathVars));
var paramA = pathVars[1];
var paramB = pathVars[2];
var paramC = pathVars[3];
var paramD = pathVars[4];
// Do stuff with the rest of your functionality here
res.status(200).send('Whatever you wanna send');
}
}
Run Code Online (Sandbox Code Playgroud)
命令行代码部署那么这将是这个样子gcloud beta functions deploy myFunction --stage-bucket<STORAGE_BUCKET> --trigger-http
(该命令的完整文档在这里).然后https://<YOUR_REGION>-<YOUR_PROJECT_ID>.cloudfunctions.net/myFunction
,您的新端点URL就会出现,然后您可以在实际拨打电话时附加后续查询或路由参数(例如,get
拨打电话https://<YOUR_REGION>-<YOUR_PROJECT_ID>.cloudfunctions.net/myFunction/paramA/paramB/not-a-param/paramC/also-not-a-param/paramD
).
请注意:
--entry-point
标志,否则应以与CLI中使用的名称相同的名称导出您的函数.此名称将用于生成的URL.--stage-bucket <STORAGE_BUCKET>
命令是可选的,但我总是使用它.index.js
或function.js
找到您的功能的package.json
文件,但如果您提供包含main
条目的文件,则云功能将查找它. 归档时间: |
|
查看次数: |
2793 次 |
最近记录: |