[解決済み] Firebase Cloud Functions: onRequestとonCallの違いについて
質問
ドキュメントを読んでいたら、こんなことに遭遇しました。
...関数を直接呼び出すには、HTTPリクエストか からの呼び出し .
~ ソース
そこ
(引用文中のリンク)
についての言及があります。
functions.https.onCall
.
しかし、チュートリアルでは
ここで
のように、別の関数
functions.https.onRequest
が使われていますが、どちらを使うべきなのでしょうか、またその理由は?両者の違いや類似点は何ですか?
のドキュメント
functions.https
は
ここで
.
どのように解決するのですか?
この 公式ドキュメント はとても参考になるのですが、素人からすると、記載されている違いに最初は戸惑いました。
-
両タイプ は、デプロイされると一意の HTTPS エンドポイント URL が割り当てられ、https クライアントを使用して直接アクセスすることができます。
-
しかし、その方法には 1 つの重要な違いがあります。 と思われる と呼ばれることです。 .
-
onCall
: クライアントのfirebase.functions()
-
onRequest
: 標準的な https クライアントを介して (例.fetch()
JSのAPI)
-
オンコール
-
クライアントアプリから直接呼び出すことができます(これが主な目的でもあります)。
functions.httpsCallable('getUser')({uid}) .then(r => console.log(r.data.email))
-
ユーザが提供する実装で
data
と オートマジック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
-
主にExpress APIのエンドポイントとして機能します。
-
エクスプレスで実装されている
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)) })
-
ユーザが提供する認可ヘッダに依存します。
-
入力データと応答データに責任を持つ。
関連
-
[解決済み】event.stopPropagationとevent.preventDefaultの違いは何ですか?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] substrとsubstringの違いは何ですか?
-
[解決済み] Reduxの非同期フローになぜミドルウェアが必要なのか?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] これは純関数ですか?