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 fungsi Cloud Run atau Cloud Run melalui permintaan HTTP.
Memanggil endpoint HTTP
Jenis langkah ini memungkinkan Anda membuat permintaan HTTP. Permintaan HTTP dan 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 menetapkan 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 dari berikut ini untuk permintaan HTTP:http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: wajib diisi. URL tempat permintaan dikirim.REQUEST_METHOD
: wajib jika menggunakan jenis panggilanhttp.request
. Jenis metode permintaan HTTP yang akan digunakan. Contoh:GET
POST
PATCH
DELETE
REGISTERED_SERVICE
: optional. Nama layanan Direktori Layanan 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 menyediakan input ke API.Jika menggunakan header
Content-Type
untuk menentukan jenis media 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, isi akan dienkode seperti yang ditentukan. Misalnya, data tersebut mungkin dienkode JSON atau URL.Jika menggunakan header
User-Agent
untuk mengidentifikasi agen pengguna yang meminta, hal berikut berlaku:- Defaultnya adalah
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
- Jika nilai ditentukan,
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
akan ditambahkan ke nilai tersebutMisalnya, jika
User-Agent: "MY_USER_AGENT_VALUE"
ditentukan, header permintaan HTTP akan menjadi seperti berikut (dengan spasi antara nilai yang ditentukan dan 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 isi permintaan ada, hal berikut berlaku:- Jika nilai isi adalah byte, header akan ditetapkan ke
Content-Type: application/octet-stream
. - Jika tidak, isi akan dienkode JSON dan header ditetapkan 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 ditetapkan 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 yang diautentikasi 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"]
Selain mendukung string atau daftar string, kunci
scopes
juga mendukung string yang dipisahkan spasi dan 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, atribut ini ditetapkan ke nilai yang sama denganurl
; tetapi, atribut ini harus ditetapkan ke URL root layanan Anda. Misalnya:https://region-project.cloudfunctions.net/hello_world
.
TIMEOUT_IN_SECONDS
: optional. Durasi dalam detik permintaan diizinkan untuk berjalan sebelum menampilkan pengecualian. 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
. Atau, 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
: menggunakan kolomheaders
untuk mengakses header respons HTTP menurut namanya.PATH_TO_FIELD
: jalur ke kolom dalam respons JSON yang ingin Anda akses. Mungkin hanya nama kolom, atau jika kolom tersebut disusun bertingkat di dalam objek, kolom tersebut dapat berbentukobject1.object2.field
.
Misalnya, jika API menampilkan {"age":50}
dan alur kerja menyimpan respons tersebut
dalam variabel yang disebut age_response
, contoh berikut akan 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 Anda sendiri, contoh ini menggunakan lokasi Google Cloud Anda untuk membuat istilah penelusuran, yang 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 HTTP GET dengan header kustom. Anda juga dapat memberikan definisi header kustom saat membuat jenis permintaan HTTP lainnya.
YAML
JSON
Menggunakan OIDC untuk mengautentikasi saat membuat permintaan ke fungsi Cloud Run
Contoh ini membuat permintaan HTTP menggunakan OIDC dengan menambahkan bagian auth
ke
bagian args
dari definisi alur kerja, setelah menentukan URL.
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 sebelumnya. 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 endpoint lokal pribadi, Compute Engine, GKE, atau endpoint lainnya dengan mengaktifkan IAP
- Referensi sintaksis Workflows