Облачные функции Firebase: разница между onRequest и onCall - PullRequest
0 голосов
/ 27 июня 2018

Проходя по документам, я столкнулся:

... вы можете вызывать функции напрямую с помощью HTTP-запроса или вызова с клиента .

~ источник

там (ссылка в цитате) - это упоминание о functions.https.onCall.

Но в уроке здесь используется другая функция functions.https.onRequest, какую же мне использовать и почему? В чем разница / сходство между ними?

Документация для functions.https здесь здесь .

1 Ответ

0 голосов
/ 23 июля 2018

Официальная документация для них действительно полезна, но с точки зрения любителя, описанные различия поначалу сбивали с толку.

  • Оба типа при развертывании назначаются с уникальным URL-адресом конечной точки HTTPS и могут быть доступны напрямую.

OnCall

  • Может быть вызвано (и это также является основной целью) непосредственно из клиентского приложения.

    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 автоматически содержит метаданные о запросе, такие как uid и token.
  • Входные data и response объекты автоматически (де) сериализуются.

onRequest

  • Firebase onRequest Документы
  • Служит в основном как конечная точка Express API.
  • Реализуется с объектами Express 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))
    })
    
  • Зависит от предоставленных пользователем заголовков авторизации.
  • Вы несете ответственность за ввод и ответные данные.

Подробнее читайте здесь Улучшен ли новый функционал облачных функций Firebase https.onCall?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...