2017-02-09 204 views
2

这是一个比我更喜欢来这里的问题比较简单一些,但我一直在试图找到一个答案,并且我绝对不能 -Google云端平台HTTP函数是否支持路由参数?

Google Cloud Platform HTTP函数支持路由参数,在这里? http://expressjs.com/en/guide/routing.html#route-parameters

具体来说,我发现Google云平台HTTP函数似乎使用Express作为基础,但是我看到的所有函数都已经只是运行req和res参数,没有其他任何示例。我可以访问正文中的数据,但这不允许我从路由中提取参数,例如在传递给“/ users /:userId/books /:bookId”的请求中查找书签ID。我看不到如何将它们填充到req.params中,而无法指定路径的哪一部分与此处的名称相对应。

我知道我总是可以用另一种方式传递它们,但这样更清洁,更符合我们想要使用的设置,因此我希望尽可能使其工作。有没有办法做到这一点,我完全失踪或根本不支持?

回答

1

我能够联系到支持小组,这似乎是,支持这一点 - 您只需使用req.path即可拉出完整路径,然后以某种方式解析它(I使用path-to-regexp

+0

当使用路由参数时,cli部署过程是什么样的? –

0

你可以尝试modofun:https://modofun.js.org

它是基于请求路径上的多个操作的路由器,并且还支持自动参数从路径解析。

它将URL路径解析为操作名称和参数列表,这些参数被填充到req.params中,与使用正则表达式时的Express相同。所以,你可以做这样的事情:

var modofun = require('modofun') 

exports.bookstore = modofun(
    { 
    /** 
    * /users/:userId/:bookId 
    */ 
    users: (req, res) => { 
     var [userId, bookId] = req.params 
     // ... 
     res.json(data) 
    } 
    }, 
    { mode: 'reqres' } 
) 

或者,您也可以扩展到函数参数的参数,并用纯职能的工作,像这样:

var modofun = require('modofun') 

exports.bookstore = modofun(
    { 
    /** 
    * /users/:userId/:bookId 
    */ 
    users: (userId, bookId) => { 
     // ... 
     return data 
    } 
    }, 
    { mode: 'function' } 
) 

我做了一个谷歌云功能部署我在生产中,主要是因为我不需要Express的大型依赖关系,我想要更轻量级的东西。

但请记住,您还可以将Express与Google Cloud Functions一起使用。没有什么能阻止你用通常的路由匹配规则创建一个Express应用程序,然后将它作为你的GCloud功能的导出传递。

希望有所帮助。