Cloud Functions
| Google Cloud Platform | Firebase |
Cloud Functions
- Cloud Functions for Firebase
- Firebase CLI プロジェクトの Google Cloud Functions へファイルをアップロードして、Google Cloud Storageへ保存するコードをTypeScriptで書く
- Cloud Function関連ブログ
- Firebase関連ブログ
ローカル実行
- Firebase エミュレータを呼び出す
**package.json で定義された、firebase emulators:start を実行
$ npm install -g firebase-tools $ cd functions $ npm run serve
Expressと統合
$ npm install --save express $ npm install --save-dev @types/express
- index.ts
import * as functions from 'firebase-functions'; import * as express from 'express'; const app: express.Express = express(); const router: express.Router = express.Router() app.use(router); router.get('/test', (req, res) => { res.send('TEST!'); }); export const api = functions.https.onRequest(app);
カスタムドメイン
- https://blog.katsubemakito.net/firebase/cloudfunctions-restfulapi-domain-rewrite
- https://firebase.google.com/docs/hosting/full-config?hl=ja
- https://firebase.google.com/docs/hosting/full-config?hl=ja#rewrites
- globパターンマッチング
- Hostingと併用することで対応
- Hostingに対してカスタムドメインを設定
- firebase.json の hosting の rewrite に functions を追加
- Functions
import * as functions from 'firebase-functions'; import * as express from 'express'; const app: express.Express = express(); router.get('/api/test', (req, res) => { res.send('TEST!'); }); export const apiService = functions.https.onRequest(app);
- firebase.json
- パスもapi、公開(export)する関数も apiだと、パスにマッチしないため、別の名前にする
"hosting": [ { : 省略 "rewrites": [ { "source": "/api/**", "function": "apiService" }, { "source": "**", "destination": "/index.html" } ] } ]
- 実行
© 2006 矢木浩人