🏗️

Cloud FunctionsにHTTPリクエストを送って呼び出す

2023/10/08に公開

onRequestメソッドを使ってみる

公式を参考に環境構築とデプロイをする

https://firebase.google.com/docs/functions/get-started?hl=ja&gen=2nd

以下のコマンド2個を実行してプロジェクトを作成する。

自分の作成したプロジェクトを指定する。

firebase init firestore

TypeScriptを選択して関数を作成する。

firebase init functions

axiosをインストールする必要があるので、fuctionsディレクトリに移動してインストールする。

cd functions
npm i axios

News APIを叩く関数を作成する

index.tsにトリガー関数を作成する。

// functions/src/index.ts

import * as functions from 'firebase-functions';
import axios from 'axios';

// fetchNews関数を定義
export const fetchNews = functions.https.onRequest(async (req, res) => {
  // apiKeyという変数に、functions.config().newsapi.keyを代入
  const apiKey = functions.config().newsapi.key;
  // endpointUrlという変数に、APIのURLを代入
  const endpointUrl = `https://newsapi.org/v2/top-headlines?country=jp&apiKey=${apiKey}`;
  try {
    // axios.getでAPIを叩き、結果をresponseに代入
    const response = await axios.get(endpointUrl);
    // res.jsonで結果を返す。これがポストマンに表示される。
    res.json(response.data);
  } catch (error) {
    // エラーが発生した場合は、エラーを返す
    console.error("Error fetching news:", error);
    // 500はサーバーエラーのエラー処理
    res.status(500).send(error);
  }
});

Firebase CLIを使って、環境変数を設定
NEWS APIのAPIキーを設定する

firebase functions:config:set newsapi.key="*******************6840f935a5f7"

関数をデプロイする

firebase deploy --only functions

PostmanでHTTP GETする

FirebaseのCloud Functionsのコンソール画面で、関数へアクセスできるURLが確認できるのでこちらをマウスを上にホバーすると全体のURLが表示されるのでコピーして、Postmanでアクセスする。
成功すればこのようにログが表示されます。

最後に

Cloud Functionsは、Firebase AuthとFirestoreを操作するぐらいでしか使ってなかったので、APIへアクセスする関数を作れたことは良い勉強になりました。

Jboy王国メディア

Discussion