🏗️
Cloud FunctionsにHTTPリクエストを送って呼び出す
onRequestメソッドを使ってみる
公式を参考に環境構築とデプロイをする
以下のコマンド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へアクセスする関数を作れたことは良い勉強になりました。
Discussion