gpt4 book ai didi

javascript - Firebase云函数: Difference between onRequest and onCall

转载 作者:行者123 更新时间:2023-12-02 06:41:21 26 4
gpt4 key购买 nike

浏览文档,我遇到了:

...you can call functions directly with an HTTP request or a call from the client.

~ source

其中(引用中的链接)提到了functions.https.onCall

但是在教程中here ,使用了另一个函数 functions.https.onRequest,那么我应该使用哪个函数,为什么?它们之间有什么区别/相似之处?

functions.https 的文档是 here .

最佳答案

official documentation这些确实很有帮助,但从业余爱好者的 Angular 来看,所描述的差异一开始令人困惑。

  • 这两种类型在部署时都会分配一个唯一的 HTTPS 端点 URL,并且可以使用 https 客户端直接访问。

  • 但是,它们的调用方式有一个重要的区别

    • onCall:来自客户端的firebase.functions()
    • onRequest:通过标准 https 客户端(例如 JS 中的 fetch() API)

onCall

  • 可以直接从客户端应用调用(这也是主要目的)。

     functions.httpsCallable('getUser')({uid})
    .then(r => console.log(r.data.email))
  • 它是通过用户提供的数据automagic上下文实现的。

     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)
    })
    })
  • 上下文自动contains metadata有关请求的信息,例如 uidtoken

  • 输入数据响应对象会自动(反)序列化。

onRequest

  • Firebase onRequest Docs

  • 主要用作 Express API 端点。

  • 它是通过快速 RequestResponse 对象实现的。

     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))
    })
  • 取决于用户提供的授权 header 。

  • 您负责输入和响应数据。

在此处了解更多信息 Is the new Firebase Cloud Functions https.onCall trigger better?

关于javascript - Firebase云函数: Difference between onRequest and onCall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51066434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com