# HTTP Request

Anda dapat mengirimkan request pada process flow untuk menyambungkannya pada API yang Anda gunakan atau mengintegrasikan dengan API third-party.

### **HTTP Header**

Jika Anda memiliki request yang ingin Anda jalankan, Anda perlu mengetahui method, URL, serta value dan key opsional lainnya. Pilih HTTP Request pada daftar command kemudian akan ditampilkan sebagai gambar di bawah.

![HTTP Header](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FfegcllAbCYBQuVyAYyzk%2FHTPP%20Setting.png?alt=media\&token=b9f166ab-0939-4863-b7a8-cf2b31946347)

**Penjelasan Komponen:**

| Nama              | Deskripsi                                                                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Nama HTTP Request | node\_id pada komponen workflow.                                                                                                                              |
| Method            | Method dari HTTP Request mensupport GET, POST, PUT, DELETE, dan PATCH.                                                                                        |
| URL               | API yang ingin Anda hit (link yang ingin Anda akses). URL bersifat dynamic, URL dapat menggunakan parameter, tergantung oleh variable yang akan ditampilkan.  |
| Key               | Nama variable (dapat menggunakan parameter yang tidak harus statis).                                                                                          |
| Value             | Value dari variable (dapat menggunakan parameter yang tidak harus statis).                                                                                    |
| + HTTP Header     | Button untuk menambahkan header (key dan value).                                                                                                              |
| Play              | Untuk mengeksekusi node\_id yang telah dibuat.                                                                                                                |
| Add               | Untuk menyimpan node\_id padaworkflow.                                                                                                                        |

#### **A. Request Methods**

Saat ini, terdapat 5 method yang dapat Anda gunakan untuk mengambil data dari API pada process flow, yaitu GET, POST, PUT, DELETE, and PATCH.

#### **B. Setting Request URLs**

Setiap request yang Anda kirim pada process flow membutuhkan URL yang merepresentasikan endpoint dari API yang Anda gunakan. Tiap operasi yang dapat Anda tampilkan menggunakan API biasanya terkait dengan endpointnya. Tiap endpoint dalam API tersedia pada particular URL, inilah yang Anda masukkan pada process flow untuk akses API. &#x20;

Jika Anda membuat sebuah API, URL biasanya menjadi lokasi dasar dan pathnya. Sebagai contoh:

![](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2F2Ex4CALVAxeW6aB2KDhs%2FSetting%20URL%20HTTP%20Req%20edit.png?alt=media\&token=2a77699c-b6c0-43a0-ac64-0a1ea5b2ec25)

**Deskripsi dari URL :**

1\.     {URL}   : Digunakan untuk meneruskan informasi ke destinasi.

2\.     {Path}  : Lokasi data pada server.

Jika Anda menggunakan third-party API, provider API Anda akan menyediakan URL yang Anda butuhkan, sebagai contoh dalam dokumentasi developer mereka.&#x20;

Anda dapat mengetikkan query parameter secara optional ke kolom URL. Kata apapun setelah tanda tanya (?) pada URL dianggap sebagai parameter yang dapat menyimpan values. Value untuk parameter yang sesuai diberikan setelah simbol "equals" (=). Beberapa parameter dapat dikirimkan melalui URL dengan memisahkannya dengan menambahkan "&". Sebagai contoh:

![](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MNQidQwa-0K9_KnQpoc%2F-MRTTNpwdQk9fhxOdvK5%2F-MRTXyOlwPZBBAVW5HFh%2FScreen%20Shot%202021-01-20%20at%2013.46.50.png?alt=media\&token=d9973fa7-2331-4fb2-91a2-4e7543875b8b)

URL menyediakan variable dinamis yang dapat Anda gunakan pada request Anda. Tiap nama variable mewakili key, jadi mereferensikan nama variable mengijinkan Anda untuk mengakses valuenya. Nama variable biasanya diambil dari proses sebelumnya.&#x20;

Perhatikan contoh workflow berikut ini.

![Process Flow 'Kurs Mata Uang'](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2Fx0yozMxTBbNeGLyUMjwr%2FProcess%20Flow%20Kurs%20Mata%20Uang.png?alt=media\&token=2fcb4fa6-4d7d-4b94-baa7-1f5205690bed)

Pada gambar diatas (Process Flow ‘Kurs Mata Uang’), kita ambil contoh dari proses ‘getKurs'. Proses ini untuk menyediakan respon feedback pada request yang dikirim.

![](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MNQidQwa-0K9_KnQpoc%2F-MRTTNpwdQk9fhxOdvK5%2F-MRTiT3T7sV68a7a35XG%2FScreen%20Shot%202021-01-20%20at%2014.36.19.png?alt=media\&token=7d19287b-a1f8-41d3-bdbd-650c49a2dd50)

${getEntity.response} variable ini berisi response dari proses ‘getEntity’. Atau, Anda dapat menambahkan ${getEntity.response} menggunakan response (output) dari proses ‘getEntity’, seperti pada gambar berikut ini.

![](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MNQidQwa-0K9_KnQpoc%2F-MRTTNpwdQk9fhxOdvK5%2F-MRTiZREhjzPn9OvDses%2FScreen%20Shot%202021-01-20%20at%2014.37.27.png?alt=media\&token=3e5942ec-e0e2-4259-981d-e0ea0abd874a)

Perhatikan contoh workflow berikut ini.

![Add Gitlab Issue Workflow](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FTW2qGTFGzPOzFCjIobi8%2FProcess%20Flow%20gitlab%20issue%20edit.png?alt=media\&token=6c582037-1023-4606-a5d6-be99ffcf9447)

Pada gambar diatas _(Add Gitlab Issue Workflow_), kita ambil contoh dari proses ‘addGitlabIssue’. Proses ini adalah untuk menyediakan respon feedback dari request yang dikirim, respon ini ada pada form dari object 'title' dimana valuenya adalah ${response.title}. Variable ${response.title} ini berisi response title dari proses ‘transformIssue’.

![Add Gitlab Issue - HTTP Header](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FHqkYP6MbiPp4XAidx6CY%2FHTTP%20setting%20gitlab%20issue%20edit.png?alt=media\&token=bf4dee97-7720-42fe-9ca6-7a6dfeee5016)

Variable ${response.title} tidak akan bisa diproses pada 'getChatLink'. Karena, sebelum proses 'getChatLink' terdapat 2 proses yaitu 'addGitlabIssue' dan 'getToken', saat Anda memasukkan variable ${response.title} pada 'getChatLink', sistem akan bingung untuk menentukan title variable untuk ditampung, baik variabel yang akan ditampung merupakan response dari proses 'addGitlabIssue' ataupun response dari proses 'getToken'.

#### **C. Setting Request Header**

Beberapa API mengharuskan Anda untuk mengirim header tertentu bersama dengan request, biasanya untuk menyediakan metadata tambahan tentang operasi yang Anda tampilkan. Anda dapat mengaturnya di tabel Header. Masukkan pasangan key-value yang Anda butuhkan dan process flow akan mengirim mereka bersama dengan request Anda. Variable memungkinkan Anda untuk menyimpan dan menggunakan kembali value pada request Anda. Menggunakan variabel meningkatkan kemampuan Anda untuk bekerja secara efisien dan meminimalkan kemungkinan error.

Sebagai contoh, untuk menyertakan otorisasi pada request header, Anda dapat menentukan header pada request node id 'getToken', request ini berfungsi untuk mengambil variable token dari API yang terdapat dalam URL dan akan menampung variable sebagai response.

![Get Token - HTTP Header](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FFigQ9TqCwSopVh8P3LBE%2FgetToken%20gitlab%20issue%20edit.png?alt=media\&token=0497aea9-6ecc-4260-ab37-69e31d05871b)

Untuk mendapatkan token dari aplikasi 3Dolphins, request body pada form 3Dolphins account harus diisi. Fungsi akun 3Dolphins ini sebagai autentikasi pada API Rest, jadi hanya user 3Dolphins yang dapat menggunakan API 3Dolphins.

![Get Token - HTTP Body](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2Fhh0NJBgfyJm7kegf0Hv2%2FgetToken%20HTTP%20Body%20edit.png?alt=media\&token=c4a2a78e-2ad4-42e7-89f6-634c536fbda2)

Saat request dieksekusi, kemudian response akan diperoleh dari form dari akses token.

![Get Token - HTTP Response](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FgpMLQY3KwiQnVQ0aCfgj%2FgetToken%20HTTP%20response%20edit.png?alt=media\&token=c792782d-74f9-4a52-8d57-7737122839aa)

Pada gambar diatas (Gambar Add Gitlab Issue Workflow), kita ambil contoh dari proses 'getChatLink'. Proses ini menyediakan response feedback untuk request yang dikirim, response ini berada di form object 'Authorization' yang valuenya adalah ‘${getToken.response.token}’. Variable ‘${getToken.response.token}’ ini berisi token response dari proses 'getToken'.&#x20;

![Get Chat Link - HTTP Header](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FyHm95VorOnE9WBQG8DXc%2FgetChatLink%20HTTP%20Header%20edit.png?alt=media\&token=9383b6ec-8c03-4323-99bd-ed5f1ee6fc36)

### HTTP Body

Tab ‘HTTP Body’ dalam process flow memungkinkan Anda menentukan data yang perlu Anda kirim dengan request. Anda dapat mengirim berbagai jenis data body untuk disesuaikan dengan API Anda.

Jika anda mengirim data body, pastikan Anda memiliki header yang sesuai untuk menunjukkan tipe konten API Anda mungkin butuh untuk memproses dan menerima data secara benar. Biasanya Anda akan menggunakan data body dengan request POST.

Pada gambar Add Gitlab Issue Workflow, kita ambil contoh dari proses 'getToken'. Untuk mendapatkan akses token membutuhkan request body seperti akun 3Dolphins. Akun 3Dolphins ini berfungsi sebagai autentikasi pada API Rest, jadi hanya user 3Dolphins yang dapat menggunakan API 3Dolphins.

![Get Token - HTTP Body](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2Fhh0NJBgfyJm7kegf0Hv2%2FgetToken%20HTTP%20Body%20edit.png?alt=media\&token=c4a2a78e-2ad4-42e7-89f6-634c536fbda2)

### HTTP Response

Setelah header dan detail request lainnya disiapkan, Anda dapat mengklik **'Play'** untuk menjalankan request Anda dan memeriksa respons yang diterima dari server API. Jika request Anda tidak bekerja seperti yang diharapkan, periksa beberapa error.

Pada gambar Add Gitlab Issue Workflow diatas, kita ambil contoh dari proses 'addGitlabIssue', agar dapat menambahkan issue pada gitlab, kita butuh destinasi URL (server API) dan parameternya akan dikirim ke gitlab. Sebagai contoh pada proses 'addGitlabIssue', parameter yang akan dikirim adalah title, description, dan label. Saat proses 'addGitlabIssue' berjalan, anda akan mendapat response (response ini akan dikirim ke gitlab) seperti gambar dibawah ini.

![Add Gitlab Issue - HTTP Response](https://3286717921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlqWTLEMUin8jixjPTHF7%2Fuploads%2FhcwNEcJkgUFBX8rEU4IC%2Fadd%20gitlab%20issue%20-%20http%20response%20result%20edit.png?alt=media\&token=1deea98f-7985-4d3b-a71b-ce9a3d5b1186)
