浏览文档时,我遇到了
...您可以直接通过HTTP请求或call from the client调用函数。
有(引号中的链接)是关于functions.https.onCall
的提及。
但是在教程here中,使用了另一个函数functions.https.onRequest
,那么我应该使用哪个函数?为什么?它们之间的区别/相似之处是什么?
functions.https
的文档为here。
答案 0 :(得分:20)
official documentation确实有用,但是从业余爱好者的角度来看,所描述的差异起初令人困惑。
可以直接从客户端应用程序调用(这也是主要目的)。
functions.httpsCallable('getUser')({uid})
.then(r => console.log(r.data.email))
它由用户提供的data
和 automagic context
实现。
export const getUser = functions.https.onCall((data, context) => {
if (!context.auth) return {status: 'error', code: 401, message: 'Not signed in'}
return new Promise((resolve, reject) => {
// find a user by data.uid and return the result
resolve(user)
})
})
context
自动contains metadata处理诸如uid
和token
之类的请求。data
和response
对象会自动(反)序列化。它由明确的Request
和Response
对象实现。
export const getUser = functions.https.onRequest((req, res) => {
// verify user from req.headers.authorization etc.
res.status(401).send('Authentication required.')
// if authorized
res.setHeader('Content-Type', 'application/json')
res.send(JSON.stringify(user))
})
在这里Is the new Firebase Cloud Functions https.onCall trigger better?
了解更多