En parcourant les documents, j'ai rencontré:
... vous pouvez appeler des fonctions directement avec une requête HTTP ou un appel du client .
~ source
il (lien dans la citation) est une mention sur functions.https.onCall
.
Mais dans le tutoriel ici , une autre fonction functions.https.onRequest
est utilisé, alors lequel dois-je utiliser et pourquoi? Quelle est la différence/similitude entre eux?
Documentation pour functions.https
est ici .
Le documentation officielle pour ceux-ci est vraiment utile, mais du point de vue d'un amateur, les différences décrites étaient déroutantes au début.
Peut être invoqué (et c'est également l'objectif principal) directement à partir de l'application cliente.
functions.httpsCallable('getUser')({uid})
.then(r => console.log(r.data.email))
Il est implémenté avec data
et automagic context
fournis par l'utilisateur.
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
automagiquement contient des métadonnées sur la demande comme uid
et token
.data
et response
sont (dé) sérialisés automatiquement.Il est implémenté avec des objets express Request
et 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))
})
Pour en savoir plus, cliquez ici Le nouveau déclencheur https.onCall des fonctions cloud de Firebase est-il meilleur?