Как объяснено в do c:
Для использования вызываемых функций HTTPS вы должны использовать клиентский SDK для своей платформы вместе с functions.https
backend API ( или реализовать протокол )
, что означает, что вы должны следовать протоколу в любом случае , поскольку клиентские SDK реализуют протокол.
Итак, давайте посмотрим, что говорит протокол об ответе, который должен быть отправлен клиенту (то есть вызывающему или потребителю):
Протокол определяет формат тела ответа как следует:
Ответ от конечной точки клиента всегда является объектом JSON . Как минимум, он содержит data
или error
вместе с любыми дополнительными полями. Если ответ не является объектом JSON или не содержит данных или ошибки, клиентский SDK должен рассматривать запрос как сбойный с кодом ошибки Google ВНУТРЕННИЙ.
error
- ....
data
- значение, возвращаемое функцией. Это может быть любое допустимое JSON значение . SDK firebase-functions автоматически кодирует значение, возвращаемое пользователем, в этот формат JSON. Клиентские SDK автоматически декодируют эти параметры в собственные типы в соответствии с форматом сериализации, описанным ниже.
Если присутствуют другие поля, их следует игнорировать.
Итак, чтобы ответить на ваш вопрос «что я должен вернуть клиенту?», вы должны вернуть данные, которые могут быть JSON закодированы . См. Также этот раздел протокола do c.
Например, как подробно описано в do c, в вызываемом облаке вы можете сделать
return {
firstNumber: firstNumber,
secondNumber: secondNumber,
operator: '+',
operationResult: firstNumber + secondNumber,
};
//Excerpt of the doc
или
return {result: "success"}
в своих спецификациях c case («Что мне возвращать в вызываемой функции https, если она не ожидает возврата ничего»), вы вполне можете вернуть следующее, как вы упомянули в своем вопросе:
const date = new Date();
const message = "the message";
return { code: "200 OK", date: date, body: message };
Но вы также может быть return true;
или return null;
... Каким-то образом вам решать, что имеет смысл в вашем контексте.
Обратите внимание, что в случае, если вы возвращаете { code: "200 OK", date: date, body: message }
, значение code
не будет рассматриваться клиентом как код ответа HTTP, поскольку этот объект JSON вставлен в тело ответа.