Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Panggil fungsi melalui permintaan HTTP

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat memicu fungsi melalui permintaan HTTP dengan menggunakan functions.https . Ini memungkinkan Anda untuk menjalankan fungsi sinkron melalui metode HTTP yang didukung berikut ini: GET , POST , PUT , DELETE , dan OPTIONS .

Contoh di halaman ini didasarkan pada fungsi sampel yang terpicu saat Anda mengirim permintaan HTTP GET ke titik akhir fungsi. Fungsi sampel mengambil waktu server saat ini, memformat waktu seperti yang ditentukan dalam parameter kueri URL, dan mengirimkan hasilnya dalam respons HTTP.

Memicu fungsi dengan permintaan HTTP

Gunakan functions.https untuk membuat fungsi yang menangani peristiwa HTTP. Penangan peristiwa untuk fungsi HTTP mendengarkan peristiwa onRequest() , yang mendukung router dan aplikasi yang dikelola oleh kerangka kerja web Express .

Menggunakan objek permintaan dan respons Ekspres

Digunakan sebagai argumen untuk onRequest() , objek Request memberi Anda akses ke properti permintaan HTTP yang dikirim oleh klien, dan objek Response memberi Anda cara untuk mengirim respons kembali ke klien.

exports.date = functions.https.onRequest((req, res) => {
  // ...
});

Menggunakan aplikasi Ekspres yang ada

Menggunakan App sebagai argumen untuk onRequest() , Anda dapat meneruskan aplikasi Express lengkap ke fungsi HTTP. Kode boilerplate dapat dipindahkan ke middleware seperti yang ditunjukkan:

const express = require('express');
const cors = require('cors');

const app = express();

// Automatically allow cross-origin requests
app.use(cors({ origin: true }));

// Add middleware to authenticate requests
app.use(myMiddleware);

// build multiple CRUD interfaces:
app.get('/:id', (req, res) => res.send(Widgets.getById(req.params.id)));
app.post('/', (req, res) => res.send(Widgets.create()));
app.put('/:id', (req, res) => res.send(Widgets.update(req.params.id, req.body)));
app.delete('/:id', (req, res) => res.send(Widgets.delete(req.params.id)));
app.get('/', (req, res) => res.send(Widgets.list()));

// Expose Express API as a single Cloud Function:
exports.widgets = functions.https.onRequest(app);

Panggil fungsi HTTP

Setelah Anda menerapkan fungsi HTTP, Anda dapat memanggilnya melalui URL uniknya sendiri. URL mencakup yang berikut, dalam urutan:

  • Region (atau region) tempat Anda menerapkan fungsi. Beberapa fungsi produksi mungkin perlu secara eksplisit mengatur lokasi untuk meminimalkan latensi jaringan.
  • ID proyek Firebase Anda
  • cloudfunctions.net
  • Nama fungsi Anda

Misalnya, URL untuk memanggil date() terlihat seperti ini:

https://us-central1-<project-id>.cloudfunctions.net/date

Jika Anda mengalami kesalahan izin saat menerapkan fungsi, pastikan peran IAM yang sesuai ditetapkan ke pengguna yang menjalankan perintah penerapan.

Dengan perutean aplikasi Ekspres, nama fungsi ditambahkan sebagai awalan ke jalur URL di aplikasi yang Anda tentukan. Misalnya, URL untuk memanggil pengambil dalam contoh aplikasi Express di atas terlihat seperti ini:

https://us-central1-<project-id>.cloudfunctions.net/widgets/<id>

Jika Anda menjalankan fungsi HTTP di belakang firewall atau filter IP, Anda dapat mencari alamat IP yang digunakan Google untuk melayani fungsi HTTP.

Gunakan modul middleware dengan Cloud Functions

Jika Anda perlu menyuntikkan dependensi middleware untuk hal-hal seperti dukungan cookie atau CORS, panggil ini di dalam fungsi. Misalnya, untuk mengaktifkan dukungan CORS, tambahkan blok berikut:

// Enable CORS using the `cors` express middleware.
cors(req, res, () => {
  // ...
});

Baca nilai dari permintaan

Tabel berikut mencantumkan beberapa skenario umum:

Jenis konten Badan Permintaan Perilaku
application/json '{"name":"John"}' request.body.name sama dengan 'John'
application/octet-stream 'teks saya' request.body sama dengan '6d792074657874' (byte mentah dari permintaan; lihat dokumentasi Buffer Node.js )
text/plain 'teks saya' request.body sama dengan 'teks saya'
application/x-www-form-urlencoded 'nama=John' request.body.name sama dengan 'John'

Penguraian ini dilakukan oleh parser tubuh berikut:

Misalkan fungsi Anda dipanggil dengan permintaan berikut:

curl -X POST -H "Content-Type:application/json" -H "X-MyHeader: 123" YOUR_HTTP_TRIGGER_ENDPOINT?foo=baz -d '{"text":"something"}'

maka data yang dikirim akan terwujud di bawah:

Properti/Metode Nilai
req.method "POS"
req.get('x-myheader') "123"
req.query.foo "baz"
req.body.text "sesuatu"
req.rawBody Byte mentah (tidak diuraikan) dari permintaan

Dalam contoh fungsi date() , fungsi menguji parameter URL dan isi untuk nilai format guna menyetel format tanggal/waktu yang akan digunakan:

let format = req.query.format;
format = req.body.format;

Hentikan Fungsi HTTP

Selalu akhiri fungsi HTTP dengan send() , redirect() , atau end() . Jika tidak, fungsi Anda mungkin terus berjalan dan dihentikan secara paksa oleh sistem. Lihat juga Sinkronisasi, Asinkron, dan Janji .

Setelah mengambil dan memformat waktu server menggunakan modul moment Node.js, fungsi date() diakhiri dengan mengirimkan hasilnya dalam respons HTTP:

const formattedDate = moment().format(`${format}`);
functions.logger.log('Sending Formatted date:', formattedDate);
res.status(200).send(formattedDate);

Menghubungkan Fungsi HTTP ke Firebase Hosting

Anda dapat menghubungkan fungsi HTTP ke Firebase Hosting. Permintaan di situs Firebase Hosting Anda dapat diproksikan ke fungsi HTTP tertentu. Ini juga memungkinkan Anda untuk menggunakan domain kustom Anda sendiri dengan fungsi HTTP. Pelajari lebih lanjut cara menghubungkan Cloud Functions ke Firebase Hosting .