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.
Pemanggilan layanan Google Cloud melalui permintaan HTTP tidak boleh disamakan dengan penggunaan konektor Workflows untuk melakukan operasi API. Konektor menyederhanakan panggilan layanan karena menangani pemformatan permintaan untuk Anda, dan menyediakan metode serta argumen sehingga Anda tidak perlu mengetahui detail Google Cloud API.
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 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 tempat permintaan dikirim.REQUEST_METHOD
: wajib diisi jika menggunakan jenis panggilanhttp.request
. Jenis metode permintaan HTTP yang akan digunakan. Contoh:GET
POST
PATCH
DELETE
REGISTERED_SERVICE
: optional. Nama layanan Service Directory 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 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 respons akan dienkode seperti yang ditentukan. Misalnya, data tersebut mungkin berupa JSON atau dienkode ke 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)
ditambahkan ke nilai tersebutMisalnya, jika
User-Agent: "MY_USER_AGENT_VALUE"
ditentukan, header permintaan HTTP akan menjadi sebagai 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 ada isi permintaan, hal berikut berlaku:- Jika nilai isi adalah byte, header akan disetel ke
Content-Type: application/octet-stream
. - Jika tidak, isi akan dienkode JSON dan header akan 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 disetel ke
QUERY_KEY
:QUERY_VALUE
: opsional. Kolom kueri untuk memberikan input ke API.AUTH_TYPE
: optional. Wajib diisi 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 tombolscope
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 string yang dipisahkan dengan spasi dan koma. Contoh:"https://www.googleapis.com/auth/cloud-platform scope2 scope3"
atau
"https://www.googleapis.com/auth/cloud-platform,scope2,scope3"
Untuk mengetahui 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
; namun, atribut ini harus ditetapkan ke URL root layanan Anda. Contoh:https://region-project.cloudfunctions.net/hello_world
.
TIMEOUT_IN_SECONDS
: optional. Berapa lama dalam detik permintaan diizinkan berjalan sebelum memunculkan pengecualian. Durasi maksimum 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))
Workflows 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 menurut nama.PATH_TO_FIELD
: jalur ke kolom dalam respons JSON yang ingin Anda akses. Ini bisa berupa 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 akan menampilkan nilai
kolom age
; dalam hal ini, 50
:
age_response.body.age
Sampel
Contoh ini menunjukkan sintaksisnya.
Menetapkan respons dari panggilan API
Kecuali jika Anda memasukkan istilah penelusuran sendiri, contoh ini menggunakan Google Cloud lokasi 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 mengimplementasikan handler 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 memunculkan pengecualian seperti yang ditampilkan oleh permintaan GET. Untuk tag error lainnya, lihat Error alur kerja.
YAML
JSON
Langkah berikutnya
- Tutorial menggunakan Workflows dengan Cloud Run dan Cloud Run 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