Memanggil fungsi lokal
Penyiapan
Dokumen ini berasumsi bahwa Anda telah
menyiapkan fungsi yang berjalan secara lokal di
localhost menggunakan Functions Framework
atau Buildpack. Dokumen ini juga berasumsi bahwa Anda telah
menginstal alat curl di komputer lokal Anda.
Mengirim permintaan ke fungsi lokal
Anda dapat memicu fungsi yang berjalan secara lokal dengan mengiriminya permintaan HTTP yang dirutekan melalui proses penyajian lokal.
Tentukan tempat fungsi Anda berjalan secara lokal dengan memeriksa URL yang ditampilkan
saat Anda mulai menjalankan fungsi. Secara
default, fungsi Anda akan dihosting di localhost:8080.
Fungsi HTTP
Saat Anda menguji fungsi HTTP dari lingkungan pengembangan, fungsi HTTP biasanya
akan memproses permintaan di localhost:8080. Antarmuka ini hanya dapat diakses dari
mesin atau VM tempat fungsi Anda berjalan; permintaan yang dikirim dari
sistem lain tidak dapat mencapainya. Karena alasan ini, Anda harus mengeluarkan permintaan HTTP dari
sistem yang sama dengan tempat fungsi Anda berjalan. Dalam contoh berikut, jika fungsi Anda
memproses permintaan pada port selain 8080, ganti 8080 dalam
contoh dengan nomor port untuk fungsi Anda.
Menguji fungsi HTTP dengan Cloud Shell
Jika Anda menggunakan Cloud Shell untuk membangun dan menguji fungsi, mulai
fungsi secara lokal di jendela terminal Cloud Shell, lalu kirim
permintaan pemicu HTTP dari browser atau instance curl sebagai berikut:
Browser
Klik ikon
di toolbar Cloud Shell dan pilih port 8080 atau Change port untuk
memilih port lain. Tindakan ini akan membuka jendela browser di sistem yang benar dan
mengirimkan permintaan GET ke port yang ditunjukkan.
Curl
Untuk mengontrol format permintaan HTTP atau melihat balasan yang tidak berformat,
gunakan curl:
- Klik ikon + pada panel menu Cloud Shell untuk membuka jendela terminal baru di sistem yang sama dengan tempat fungsi Anda berjalan.
Dari dalam jendela tersebut, jalankan perintah
curluntuk memicu fungsi Anda. Contoh:curl localhost:8080
Menguji fungsi HTTP di server desktop
Jika Anda membangun dan menjalankan fungsi di sistem desktop lokal, pertama-tama
mulai fungsi Anda secara lokal, lalu kirim permintaan pemicu HTTP dari browser
atau instance curl sebagai berikut:
Browser
Buka tab atau jendela browser baru, lalu ketik http://localhost:8080 di
kolom URL browser. Tindakan ini akan membuka jendela browser ke localhost:8080 di
server desktop untuk memicu fungsi Anda.
Curl
Buka jendela terminal baru di desktop lokal Anda, lalu jalankan perintah curl
di jendela tersebut untuk memicu fungsi Anda. Contoh:
curl localhost:8080
Tindakan ini menjalankan perintah curl yang ditentukan untuk memicu fungsi Anda dan menampilkan
respons yang tidak diformat.
Fungsi CloudEvent
Anda dapat mengirim contoh peristiwa ke
fungsi CloudEvent
menggunakan curl. Permintaan curl berikut menunjukkan cara mengirim contoh peristiwa
Cloud Pub/Sub dan
Cloud Storage ke
fungsi CloudEvent yang berjalan di localhost:8080.
Pub/Sub
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.pubsub.topic.v1.messagePublished" \ -H "ce-source: //pubsub.googleapis.com/projects/MY-PROJECT/topics/MY-TOPIC" \ -d '{ "message": { "data": "d29ybGQ=", "attributes": { "attr1":"attr1-value" } }, "subscription": "projects/MY-PROJECT/subscriptions/MY-SUB" }'
Penyimpanan
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.storage.object.v1.finalized" \ -H "ce-source: //storage.googleapis.com/projects/_/buckets/MY-BUCKET-NAME" \ -H "ce-subject: objects/MY_FILE.txt" \ -d '{ "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" }'
Fungsi latar belakang
Anda dapat mengirim contoh peristiwa ke
fungsi latar belakang
menggunakan curl. Permintaan curl berikut menunjukkan cara mengirim contoh peristiwa
Cloud Pub/Sub dan
Cloud Storage ke
fungsi latar belakang yang berjalan di localhost:8080.
Pub/Sub
# 'world' base64-encoded is 'd29ybGQ=' curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId":"1144231683168617", "timestamp":"2020-05-06T07:33:34.556Z", "eventType":"google.pubsub.topic.publish", "resource":{ "service":"pubsub.googleapis.com", "name":"projects/sample-project/topics/gcf-test", "type":"type.googleapis.com/google.pubsub.v1.PubsubMessage" } }, "data": { "@type": "type.googleapis.com/google.pubsub.v1.PubsubMessage", "attributes": { "attr1":"attr1-value" }, "data": "d29ybGQ=" } }'
Penyimpanan
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId": "1147091835525187", "timestamp": "2020-04-23T07:38:57.772Z", "eventType": "google.storage.object.finalize", "resource": { "service": "storage.googleapis.com", "name": "projects/_/buckets/MY_BUCKET/MY_FILE.txt", "type": "storage#object" } }, "data": { "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" } }'