144 votes

Fonctions Cloud Firebase: Différence entre onRequest et onCall

En passant par les docs, j'ai rencontré:

...vous pouvez appeler directement les fonctions d'une requête HTTP ou un appel de la part du client.

~ source

il (lien dans le devis) est une mention à propos de functions.https.onCall.

Mais dans le tutoriel ici, une autre fonction functions.https.onRequest est utilisé, alors, qui dois-je utiliser et pourquoi? Quelle est la différence/similitude entre eux?

Documentation pour l' functions.https est ici.

200voto

Qwerty Points 1165

La documentation officielle pour ceux qui est vraiment utile, mais à partir de la vue d'un amateur, le décrit des différences ont été déroutant au premier abord.

  • Les deux types, lorsqu'il est déployé, sont une unique HTTPS URL du point de terminaison et peut être consulté directement.

onCall

  • Peut être appelé (et c'est aussi le but principal) directement à partir de l'application client.

    functions.httpsCallable('getUser')({uid})
      .then(r => console.log(r.data.email))
    
  • Il est mis en œuvre avec l'utilisateur data et 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)
      })
    })
    
  • L' context "automagiquement" contient des métadonnées à propos de la demande telle que uid et token.
  • Entrée data et response des objets sont automatiquement (de)sérialisé.

surdemande

  • Firebase surdemande Docs
  • Sert surtout comme un Express API point de terminaison.
  • Il est mis en œuvre avec express Request et Response objets.

    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))
    })
    
  • Dépend de l'utilisateur-la demande d'autorisation en-têtes.
  • Vous êtes responsable pour l'entrée et des données de réponse.

Lire plus ici Est la nouvelle Firebase Cloud Fonctions https.onCall déclencher mieux?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X