Anda dapat menentukan langkah alur kerja yang melakukan panggilan HTTP dan menetapkan respons dari panggilan ke variabel. Misalnya, Anda dapat memanggil layanan Google Cloud seperti Cloud Functions atau Cloud Run melalui permintaan HTTP.
Memanggil endpoint HTTP
Jenis langkah ini memungkinkan Anda membuat permintaan HTTP. Baik permintaan HTTP maupun HTTPS didukung. Metode permintaan HTTP yang paling umum memiliki pintasan
panggilan (seperti http.get
dan http.post), tetapi Anda dapat membuat
jenis permintaan HTTP apa pun dengan menyetel kolom call
ke http.request
dan
menentukan jenis permintaan menggunakan kolom method
.
YAML
- STEP_NAME: call: HTTP_REQUEST args: url: URL_VALUE method: REQUEST_METHOD private_service_name: "REGISTERED_SERVICE" headers: HEADER_KEY:HEADER_VALUE ... body: BODY_KEY:BODY_VALUE ... query: QUERY_KEY:QUERY_VALUE ... auth: type: AUTH_TYPE scope: AUTH_SCOPE scopes: AUTH_SCOPE audience: AUDIENCE timeout: TIMEOUT_IN_SECONDS result: RESULT_VALUE
JSON
[ { "STEP_NAME": { "call": "HTTP_REQUEST", "args": { "url": "URL_VALUE", "method": "REQUEST_METHOD", "private_service_name": "REGISTERED_SERVICE", "headers": {"HEADER_KEY":"HEADER_VALUE", ... }, "body": {"BODY_KEY":"BODY_VALUE", ... }, "query": {"QUERY_KEY":"QUERY_VALUE", ... }, "auth": { "type":"AUTH_TYPE", "scope":"AUTH_SCOPE", "scopes":"AUTH_SCOPE", "audience":"AUDIENCE" }, "timeout": "TIMEOUT_IN_SECONDS" }, "result": "RESULT_VALUE" } } ]
Ganti kode berikut:
HTTP_REQUEST
: wajib diisi. Gunakan salah satu opsi berikut untuk permintaan HTTP:http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: wajib diisi. URL tujuan pengiriman permintaan.REQUEST_METHOD
: diperlukan jika menggunakan jenis panggilanhttp.request
. Jenis metode permintaan HTTP yang akan digunakan. Contoh:GET
POST
PATCH
DELETE
REGISTERED_SERVICE
: optional. Nama layanan Direktori Layanan yang terdaftar dalam formatprojects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME
. Untuk mengetahui informasi selengkapnya, lihat Memanggil endpoint pribadi yang sesuai dengan Kontrol Layanan VPC.HEADER_KEY
:HEADER_VALUE
: opsional. Kolom header untuk memberikan input ke API.Jika Anda menggunakan header
Content-Type
untuk menentukan jenis media dari isi permintaan, hanya jenis berikut yang didukung:application/json
atauapplication/type+json
—harus berupa petaapplication/x-www-form-urlencoded
—harus berupa string yang tidak dienkodetext/type
—harus berupa string
Jika header
Content-Type
ditentukan, bagian isi akan dienkode seperti yang ditentukan. Misalnya, URL mungkin dienkode dengan JSON atau URL.Jika Anda menggunakan header
User-Agent
untuk mengidentifikasi agen pengguna yang meminta, hal berikut akan berlaku:- Defaultnya adalah
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
- Jika nilai ditentukan,
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
akan ditambahkan ke nilai tersebutContohnya, jika
User-Agent: "MY_USER_AGENT_VALUE"
ditentukan, header permintaan HTTP akan menjadi sebagai berikut (dengan spasi antara nilai yang ditentukan dan nilai default yang ditambahkan):MY_USER_AGENT_VALUE GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
BODY_KEY
:BODY_VALUE
: opsional. Kolom isi untuk memberikan input ke API.Jika header
Content-Type
tidak ditentukan, dan jika terdapat isi permintaan, hal berikut akan berlaku:- Jika nilai isi adalah byte, header akan disetel ke
Content-Type: application/octet-stream
. - Jika tidak, isi akan dienkode JSON dan header akan disetel ke
Content-Type: application/json; charset=utf-8
.
YAML
body: requests: - image: source: gcsImageUri: ${gsUri} features: - type: LABEL_DETECTION - type: SAFE_SEARCH_DETECTION - type: IMAGE_PROPERTIES result: imageAnalysisResponse
JSON
{ "requests":[ { "image": { "source": { "gcsUri": "img.png" } }, "features": [ { "type":"LABEL_DETECTION" }, { "type":"SAFE_SEARCH_DETECTION" }, { "type":"IMAGE_PROPERTIES" }, ] } ] }
- Jika nilai isi adalah byte, header akan disetel ke
QUERY_KEY
:QUERY_VALUE
: opsional. Kolom kueri untuk memberikan input ke API.AUTH_TYPE
: optional. Diperlukan jika API yang dipanggil memerlukan autentikasi. GunakanOIDC
atauOAuth2
. Untuk mengetahui informasi selengkapnya, lihat Membuat permintaan terautentikasi dari alur kerja.AUTH_SCOPE
: optional. Membatasi akses aplikasi ke akun pengguna. Gunakan kunciscope
atauscopes
.Kunci
scope
mendukung string atau daftar string. Contoh:"https://www.googleapis.com/auth/cloud-platform"
atau
["https://www.googleapis.com/auth/cloud-platform", "scope2", "scope3"]
Kunci
scopes
, selain mendukung string atau daftar string, juga mendukung spasi dan string yang dipisahkan koma. Contoh:"https://www.googleapis.com/auth/cloud-platform scope2 scope3"
atau
"https://www.googleapis.com/auth/cloud-platform,scope2,scope3"
Untuk informasi selengkapnya, lihat Cakupan OAuth 2.0 untuk Google API.
AUDIENCE
: optional. Menentukan audiens untuk token OIDC. Secara default, nilai ini ditetapkan ke nilai yang sama denganurl
; tetapi, harus ditetapkan ke URL root layanan Anda. Contoh:https://region-project.cloudfunctions.net/hello_world
.
TIMEOUT_IN_SECONDS
: optional. Durasi permintaan diizinkan untuk berjalan dalam detik sebelum menampilkan pengecualian. Durasi maksimumnya adalah 1.800 detik.RESULT_VALUE
: optional. Nama variabel tempat hasil langkah pemanggilan HTTP disimpan.
Mengakses data respons HTTP yang disimpan dalam variabel
Jika header Content-Type
untuk respons menentukan jenis media application/json
, respons JSON yang disimpan dalam variabel akan otomatis dikonversi menjadi peta yang dapat diakses.
Jika perlu, ubah API yang dipanggil untuk menentukan
jenis media application/json
untuk header respons
Content-Type
. Jika tidak, Anda dapat menggunakan fungsi json.decode
dan text.encode
untuk mengonversi isi respons menjadi peta. Contoh:
json.decode(text.encode(RESPONSE_FROM_API))
Alur kerja menyertakan parser bawaan untuk mengakses data ini. Untuk mengakses kolom dari respons HTTP, gunakan sintaksis berikut:
${VARIABLE_NAME.body|code|headers.PATH_TO_FIELD}
Ganti kode berikut:
VARIABLE_NAME
: nama variabel alur kerja tempat Anda menyimpan respons JSON.body
: gunakan kolombody
untuk mengakses isi respons HTTP.code
: gunakan kolomcode
untuk mengakses kode respons HTTP.headers
: gunakan kolomheaders
untuk mengakses header respons HTTP berdasarkan nama.PATH_TO_FIELD
: jalur ke kolom dalam respons JSON yang ingin Anda akses. Mungkin hanya nama kolom, atau jika kolom disarangkan di dalam objek, kolom tersebut dapat berbentukobject1.object2.field
.
Misalnya, jika API menampilkan {"age":50}
dan alur kerja menyimpan respons tersebut
dalam variabel bernama age_response
, contoh berikut menampilkan nilai
kolom age
; dalam hal ini, 50
:
age_response.body.age
Sampel
Contoh ini menunjukkan sintaksis.
Menetapkan respons dari panggilan API
Kecuali jika Anda memasukkan istilah penelusuran sendiri, contoh ini menggunakan lokasi Google Cloud Anda untuk membuat istilah penelusuran, yang akan diteruskan ke Wikipedia API. Daftar artikel Wikipedia terkait akan ditampilkan.
YAML
JSON
Membuat permintaan POST HTTP eksternal
Contoh ini membuat permintaan POST ke endpoint HTTP eksternal.
YAML
JSON
Membuat permintaan GET HTTP eksternal dengan header
Contoh ini membuat permintaan GET HTTP dengan header kustom. Anda juga dapat memberikan definisi header kustom saat membuat jenis permintaan HTTP lainnya.
YAML
JSON
Menggunakan OIDC untuk melakukan autentikasi saat membuat permintaan ke Cloud Functions
Contoh ini membuat permintaan HTTP menggunakan OIDC dengan menambahkan bagian auth
ke bagian args
dalam definisi alur kerja, setelah menentukan URL-nya.
YAML
JSON
Menangkap dan menangani error permintaan HTTP
Contoh ini menerapkan pengendali pengecualian kustom berdasarkan kode status HTTP yang ditampilkan oleh permintaan GET. Alur kerja menangkap potensi pengecualian dan menampilkan pesan error yang telah ditentukan. Jika pengecualian tidak dikenali, eksekusi alur kerja akan gagal dan menampilkan pengecualian seperti yang ditampilkan oleh permintaan GET. Untuk tag error lainnya, lihat Error alur kerja.
YAML
JSON
Langkah selanjutnya
- Tutorial Menggunakan Workflows dengan Cloud Run dan Cloud Functions
- Memanggil endpoint pribadi yang sesuai dengan Kontrol Layanan VPC
- Memanggil lokal pribadi, Compute Engine, GKE, atau endpoint lainnya dengan mengaktifkan IAP
- Referensi sintaksis Workflows