Tujuan Pembelajaran:
SOAP (Simple Object Access Protocol) adalah protokol komunikasi yang digunakan untuk
pertukaran data yang berbasis XML (eXtensible Markup Language) melalui jaringan. SOAP
memungkinkan aplikasi yang berjalan pada platform yang berbeda untuk saling berkomunikasi
dan bertukar data secara terstruktur. Protokol ini sering digunakan dalam lingkungan web
services.
Envelope: Memuat seluruh pesan SOAP dan menentukan versi SOAP yang digunakan.
Header (opsional): Berisi informasi tambahan seperti keamanan atau routing.
Body: Berisi payload atau isi pesan SOAP yang berisi permintaan atau respons.
Kelebihan dan kekurangan SOAP APIs:
1. Memiliki overhead yang lebih tinggi dibandingkan dengan tipe implementasi API lainnya
seperti REST.
2. Diperlukan parsing XML yang kompleks.
3. Tidak cocok untuk aplikasi yang memiliki sumber daya terbatas seperti perangkat mobile
dengan koneksi internet yang lambat.
Dalam praktikum ini, peserta akan membangun sebuah SOAP API sederhana menggunakan
bahasa pemrograman tertentu seperti Java atau C#. Langkah-langkah yang akan diikuti dalam
praktikum ini meliputi:
Dengan menyelesaikan praktikum ini, peserta akan mendapatkan pemahaman praktis tentang
bagaimana membangun dan mengimplementasikan sebuah SOAP API menggunakan bahasa
pemrograman tertentu.
Soal 1:
Apa yang dimaksud dengan SOAP dalam konteks web services?
A. Simple Object Access Protocol
B. Service Object Access Protocol
C. System Object Access Protocol
D. Secure Object Access Protocol
Pembahasan: SOAP adalah singkatan dari Simple Object Access Protocol. Ini adalah protokol
komunikasi berbasis XML yang digunakan dalam pengembangan layanan web.
Soal 2:
Metode HTTP yang umum digunakan dalam SOAP APIs adalah...
A. GET
B. POST
C. PUT
D. DELETE
Pembahasan: Metode HTTP POST digunakan dalam SOAP APIs untuk mengirimkan
permintaan dan data ke server.
Soal 3:
Kelebihan SOAP APIs adalah...
A. Sederhana dan ringan
B. Dukungan untuk berbagai bahasa pemrograman
C. Skalabilitas yang tinggi
D. Representasi data yang fleksibel
Pembahasan: Salah satu kelebihan utama dari SOAP APIs adalah dukungan untuk berbagai
bahasa pemrograman. Karena SOAP menggunakan format XML yang umum, ia dapat
diimplementasikan dalam berbagai bahasa pemrograman.
Soal 4:
SOAP APIs menggunakan format pesan yang berbasis...
A. JSON
B. XML
C. HTML
D. TXT
Pembahasan: SOAP APIs menggunakan format pesan yang berbasis XML (eXtensible Markup
Language) untuk mengirimkan data antara client dan server.
Soal 5:
Apa yang dimaksud dengan WSDL dalam konteks SOAP APIs?
A. Web Service Description Language
B. Web Service Deployment Language
C. Web Service Definition Language
D. Web Service Design Language
Jawaban yang benar: C. Web Service Definition Language
Pembahasan: WSDL adalah singkatan dari Web Service Definition Language. Ini adalah
bahasa yang digunakan untuk mendefinisikan antarmuka layanan web berbasis SOAP.
Kuis
Soal 1:
SOAP merupakan singkatan dari...
A. Simple Object Access Protocol
B. Simple Object Application Protocol
C. Service Object Access Protocol
D. Service Object Application Protocol
Pembahasan: SOAP merupakan singkatan dari Simple Object Access Protocol. Protokol ini
digunakan untuk pertukaran data yang berbasis XML melalui jaringan.
Soal 2:
Apa kelebihan utama SOAP APIs?
A. Mendukung pemanggilan prosedur jarak jauh melalui protokol standar.
B. Memiliki overhead yang rendah.
C. Cocok untuk aplikasi dengan sumber daya terbatas.
D. Tidak memerlukan parsing XML.
Jawaban yang benar: A. Mendukung pemanggilan prosedur jarak jauh melalui protokol standar.
Pembahasan: Salah satu kelebihan utama SOAP APIs adalah kemampuannya untuk
mendukung pemanggilan prosedur jarak jauh melalui protokol standar seperti HTTP.
Soal 3:
Apa kekurangan utama SOAP APIs?
A. Tidak cocok untuk aplikasi dengan sumber daya terbatas.
B. Memiliki overhead yang rendah.
C. Tidak memerlukan parsing XML.
D. Kurangnya dukungan keamanan.
Jawaban yang benar: A. Tidak cocok untuk aplikasi dengan sumber daya terbatas.
Pembahasan: Salah satu kekurangan utama SOAP APIs adalah bahwa ia tidak cocok untuk
aplikasi dengan sumber daya terbatas seperti perangkat mobile dengan koneksi internet yang
lambat.
Soal 4:
SOAP API sering digunakan dalam industri apa?
A. Perbankan
B. E-commerce
C. Hanya digunakan di internal perusahaan
D. Telekomunikasi
Pembahasan: SOAP API sering digunakan dalam industri perbankan untuk menyediakan
layanan seperti transfer dana, pemeriksaan saldo, atau pembayaran tagihan melalui aplikasi
perbankan online.
Soal 5:
Pada praktikum membangun SOAP API, apa yang harus dilakukan setelah mendefinisikan
operasi API?
A. Mengimplementasikan logika bisnis dari setiap operasi.
B. Menguji SOAP API menggunakan alat bantu pengujian.
C. Menerapkan tindakan keamanan pada SOAP API.
D. Mengatur konfigurasi SOAP API.
Tujuan Pembelajaran
Kurikulum:
Pengenalan tentang REST (Representational State Transfer)
E-commerce: Penggunaan REST APIs dalam integrasi dengan sistem pembayaran, sistem
manajemen inventaris, dll.
Media Sosial: Penggunaan REST APIs dalam integrasi dengan platform media sosial, seperti
Twitter, Facebook, dll.
Internet of Things (IoT): Penggunaan REST APIs dalam mengendalikan dan mengakses
perangkat IoT.
Layanan Pengiriman: Penggunaan REST APIs dalam melacak pengiriman, status pengiriman,
dll.
Catatan tambahan:
Setiap sesi akan mencakup penjelasan teori, studi kasus, dan diskusi kelompok.
Praktikum akan melibatkan penggunaan bahasa pemrograman tertentu, seperti Node.js,
Python, atau Java. Peserta diharapkan memiliki pengetahuan dasar dalam salah satu bahasa
tersebut.
Materi tambahan seperti referensi bacaan dan sumber daya online akan diberikan kepada
peserta untuk membantu pemahaman lebih lanjut.
Evaluasi akan dilakukan melalui tugas-tugas praktikum, ujian kecil, atau proyek kecil berbasis
REST API.
Modul ini dirancang untuk memberikan pemahaman mendalam tentang pengenalan, arsitektur,
kelebihan, kekurangan, dan contoh penggunaan REST APIs dalam berbagai industri. Peserta
diharapkan dapat memahami konsep dasar REST, mampu membangun REST API sederhana,
dan mengerti aplikasi praktis REST APIs dalam konteks industri yang berbeda.
REST (Representational State Transfer) adalah sebuah gaya arsitektur yang digunakan dalam
pengembangan aplikasi web untuk memfasilitasi komunikasi antara sistem yang berbeda
secara efisien. REST didasarkan pada protokol komunikasi yang umumnya menggunakan
protokol HTTP. Pendekatan ini bertujuan untuk mencapai skalabilitas, interoperabilitas, dan
kesederhanaan dalam desain sistem.
REST pertama kali diperkenalkan oleh Roy Fielding dalam disertasinya pada tahun 2000. Ia
mengusulkan REST sebagai suatu alternatif untuk pendekatan arsitektur web yang lebih
kompleks seperti SOAP (Simple Object Access Protocol). REST memanfaatkan fitur-fitur yang
ada dalam protokol HTTP, seperti metode HTTP (GET, POST, PUT, DELETE) dan URI (Uniform
Resource Identifier), untuk mengirimkan dan mengakses data antara sistem yang berbeda.
Client-Server: Arsitektur REST memisahkan antara client (klien) dan server. Klien mengirimkan
permintaan HTTP ke server, dan server memberikan respons kembali ke klien. Ini
memungkinkan skalabilitas dan evolusi independen antara client dan server.
Stateless: Setiap permintaan dari klien ke server harus mengandung semua informasi yang
diperlukan untuk memahami dan memproses permintaan tersebut. Server tidak menyimpan
status (state) klien sebelumnya. Hal ini memungkinkan skalabilitas yang lebih baik dan
meningkatkan keandalan sistem.
Cacheable: Respons dari server dapat disimpan di cache pada sisi klien atau di antara
sistem-sistem yang berkomunikasi. Penggunaan mekanisme cache memungkinkan
pengurangan beban server dan peningkatan performa.
Uniform Interface: Arsitektur REST memiliki antarmuka yang seragam, yang terdiri dari
penggunaan metode HTTP yang standar (GET, POST, PUT, DELETE) dan URI sebagai
identifikasi sumber daya. Ini membuat komunikasi antara client dan server lebih mudah
dipahami dan konsisten.
Layered System: Arsitektur REST memungkinkan adanya lapisan (layer) yang berbeda dalam
sistem. Setiap lapisan dapat berfungsi secara independen dan memproses permintaan tanpa
mengetahui atau memperhatikan lapisan di atas atau di bawahnya. Hal ini memungkinkan
modularitas dan fleksibilitas dalam desain sistem.
SOAP (Simple Object Access Protocol) dan REST adalah dua pendekatan yang berbeda dalam
pengembangan aplikasi web. Perbedaan utama antara keduanya adalah sebagai berikut:
SOAP: SOAP menggunakan protokol yang kompleks dan struktur pesan berbasis XML untuk
pertukaran data. Pendekatan ini cenderung lebih formal dan menyediakan dukungan yang lebih
kuat untuk keamanan dan transaksi yang kompleks. SOAP menggunakan operasi terdefinisi
dengan jelas (seperti "Create", "Read", "Update", "Delete") dan dapat berjalan di atas berbagai
protokol transportasi, seperti HTTP, SMTP, dan lainnya.
REST: REST menggunakan protokol HTTP dengan metode HTTP (seperti GET, POST, PUT,
DELETE) dan URI sebagai identifikasi sumber daya. Pendekatan ini lebih ringan dan
sederhana, dan seringkali digunakan dalam konteks pengembangan aplikasi web yang lebih
fleksibel dan skala besar. REST lebih mudah dipahami dan lebih cepat dalam kinerja, tetapi
memiliki dukungan keamanan dan transaksi yang lebih terbatas dibandingkan dengan SOAP.
Perbedaan utama antara SOAP dan REST adalah dalam kompleksitas, dukungan keamanan
dan transaksi, serta skala dan fleksibilitas dalam desain sistem.
E-commerce: Penggunaan REST APIs dalam integrasi dengan sistem pembayaran, sistem
manajemen inventaris, dll.
Media Sosial: Penggunaan REST APIs dalam integrasi dengan platform media sosial, seperti
Twitter, Facebook, dll.
Internet of Things (IoT): Penggunaan REST APIs dalam mengendalikan dan mengakses
perangkat IoT.
Layanan Pengiriman: Penggunaan REST APIs dalam melacak pengiriman, status pengiriman,
dll.
Praktikum: Membangun REST API Sederhana Menggunakan
Bahasa Pemrograman Tertentu
REST (Representational State Transfer) adalah sebuah arsitektur perangkat lunak yang
digunakan dalam pengembangan aplikasi web. Ia mengacu pada seperangkat prinsip desain
yang digunakan untuk membangun sistem yang dapat berinteraksi secara stateless dan
terdistribusi melalui protokol HTTP.
REST memanfaatkan konsep-konsep yang sudah ada dalam arsitektur web, seperti URI
(Uniform Resource Identifier), HTTP methods (GET, POST, PUT, DELETE), dan representasi
sumber daya dalam bentuk media (seperti JSON atau XML).
REST pertama kali diperkenalkan oleh Roy Fielding dalam disertasinya pada tahun 2000, yang
berjudul "Architectural Styles and the Design of Network-based Software Architectures".
Fielding merupakan salah satu perancang utama protokol HTTP dan kontributor utama dalam
spesifikasi URI.
REST berkembang sebagai alternatif untuk pendekatan arsitektur web sebelumnya, seperti
SOAP (Simple Object Access Protocol), yang kompleks dan memiliki overhead yang tinggi.
REST telah menjadi arsitektur yang populer dalam pengembangan aplikasi web karena
sederhana, ringan, dan mudah diimplementasikan.
Stateless: Setiap permintaan klien harus mengandung semua informasi yang diperlukan, dan
tidak ada keadaan (state) yang disimpan di server antara permintaan-permintaan tersebut.
Client-Server: Arsitektur REST memisahkan antara client (pengguna) dan server (penyedia
layanan), sehingga keduanya dapat berkembang secara independen.
Cacheable: Server dapat memberikan respons yang dapat di-cache oleh client, untuk
mengurangi beban jaringan dan meningkatkan efisiensi.
Uniform Interface: Antarmuka yang konsisten dan seragam, dengan menggunakan metode
standar seperti GET, POST, PUT, DELETE, dan URI yang dapat dikenali untuk mengakses dan
memanipulasi sumber daya.
Layered System: Arsitektur REST dapat memiliki beberapa lapisan (layer) yang berfungsi
sebagai perantara, seperti load balancer, cache, atau keamanan, yang meningkatkan
fleksibilitas dan skalabilitas sistem.
SOAP (Simple Object Access Protocol) adalah protokol berbasis XML yang kompleks dan
berorientasi pada pesan. Ia menyediakan banyak fitur seperti dukungan untuk transaksi,
keamanan, dan koordinasi layanan, namun memiliki overhead yang tinggi.
REST, di sisi lain, lebih sederhana dan ringan. Ia menggunakan protokol HTTP secara
langsung, memanfaatkan metode HTTP seperti GET, POST, PUT, DELETE untuk berinteraksi
dengan sumber daya. Representasi data biasanya dalam format yang lebih ringkas seperti
JSON atau XML.
REST juga mendukung statelessness, yang memungkinkan skalabilitas yang lebih baik dalam
pengembangan aplikasi web. Selain itu, REST lebih mudah dipahami dan diimplementasikan.
Pada sesi ini, peserta akan memperoleh pemahaman mendalam tentang konsep dasar REST,
sejarah dan evolusinya sebagai arsitektur web, serta prinsip-prinsip yang mendasarinya.
Mereka juga akan mempelajari perbedaan antara REST dan SOAP, dua pendekatan yang
berbeda dalam implementasi layanan web.
Soal 1:
Apa yang dimaksud dengan REST dalam konteks arsitektur perangkat lunak?
A. Representational State Transfer
B. Remote State Transfer
C. Representational State Transaction
D. Remote State Transaction
Pembahasan: REST adalah singkatan dari Representational State Transfer. Ini adalah
pendekatan arsitektur perangkat lunak yang digunakan dalam pengembangan aplikasi web.
Soal 2:
Metode HTTP yang digunakan untuk mendapatkan representasi sumber daya adalah...
A. GET
B. POST
C. PUT
D. DELETE
Soal 3:
Kelebihan utama dari REST APIs adalah...
A. Kompleksitas yang rendah
B. Dukungan untuk transaksi
C. Skalabilitas yang baik
D. Representasi data yang rumit
Pembahasan: Salah satu kelebihan utama dari REST APIs adalah skalabilitas yang baik.
Karena REST menggunakan prinsip stateless, ia memungkinkan aplikasi untuk lebih mudah
ditingkatkan secara horizontal dengan menambahkan lebih banyak server.
Soal 4:
Bagaimana representasi data sering ditransmisikan dalam REST APIs?
A. XML
B. JSON
C. HTML
D. TXT
Pembahasan: Representasi data dalam REST APIs sering ditransmisikan dalam format JSON
(JavaScript Object Notation). JSON adalah format yang ringkas dan mudah dibaca dan ditulis
oleh manusia serta mudah diproses oleh mesin.
Soal 5:
Apa yang dimaksud dengan HATEOAS dalam konteks REST APIs?
A. Hypermedia as the Engine of Application State
B. Hypertext Transfer Protocol
C. Hypermedia Transmission Protocol
D. Hypertext and Application Transfer Protocol
Dengan soal-soal ini, diharapkan peserta dapat menguji pemahaman mereka tentang REST
APIs dan memperdalam pengetahuan mereka tentang konsep, metode HTTP, kelebihan, dan
terminologi terkait REST.
Tujuan Pembelajaran
JSON (JavaScript Object Notation) adalah format data ringan dan mudah dibaca yang
digunakan untuk pertukaran data antar aplikasi. JSON didasarkan pada sintaks objek
JavaScript dan digunakan sebagai format yang umum untuk menyimpan dan bertukar data
terstruktur. Data dalam JSON direpresentasikan dalam bentuk pasangan key-value, di mana
key adalah string yang unik dan value dapat berupa tipe data apapun, termasuk string, angka,
boolean, array, dan bahkan objek lain.
Contoh JSON:
{
"nama": "John Doe",
"umur": 30,
"alamat": {
"jalan": "Jl. Contoh No. 123",
"kota": "Jakarta"
},
"hobi": ["membaca", "berenang", "memasak"]
}
Objek: Dalam JSON, data dapat dikelompokkan menjadi objek, yang diwakili oleh sepasang
kurung kurawal {} dan berisi beberapa pasangan key-value.
Array: JSON mendukung penggunaan array, yang diwakili oleh sepasang kurung siku [], dan
berisi beberapa nilai.
Nested Structures: Struktur data JSON dapat menjadi nested, yaitu objek atau array yang
berada di dalam objek atau array lainnya.
Mendukung Banyak Bahasa Pemrograman: JSON dapat digunakan dalam berbagai bahasa
pemrograman karena popularitasnya.
Platform Agnostic: JSON dapat digunakan di berbagai platform dan sistem operasi karena
dukungan luas untuk berbagai bahasa pemrograman.
Pemrosesan Data yang Efisien: Memiliki format data terstruktur yang memungkinkan
pengolahan data secara efisien, termasuk pengubahan, penyimpanan, dan pengambilan data.
Tidak Ada Skema Baku: JSON tidak mendukung definisi skema baku, yang dapat
menyebabkan kesalahan atau kebingungan saat menginterpretasi data jika tidak ada
dokumentasi yang jelas.
Contoh Penggunaan JSON APIs dalam Industri Tertentu
Contoh penggunaan JSON APIs dalam industri teknologi informasi antara lain:
Pengembangan Aplikasi Web: JSON sering digunakan untuk mengirim data dari server ke
aplikasi web atau sebaliknya, memungkinkan aplikasi untuk memproses dan menampilkan data
dengan mudah.
Internet of Things (IoT): JSON APIs dapat digunakan untuk pertukaran data antara perangkat
IoT dan platform backend, memungkinkan pengumpulan dan analisis data sensor.
Aplikasi Mobile: JSON APIs dapat digunakan dalam aplikasi mobile untuk mengambil data dari
server, mengirim data ke server, atau bertukar data dengan aplikasi lain.
Integrasi Sistem: JSON APIs memungkinkan sistem atau layanan yang berbeda untuk
berkomunikasi dan bertukar data, memfasilitasi integrasi antara aplikasi atau sistem yang
berbeda.
Dalam praktikum ini, Anda akan menggunakan JSON API untuk mengambil data dari suatu
sumber API (misalnya, API cuaca) dan memprosesnya dalam aplikasi atau skrip Anda.
Menentukan endpoint dan parameter yang diperlukan untuk mengakses API dan mendapatkan
data yang diinginkan.
Membuat permintaan HTTP menggunakan metode GET atau POST ke endpoint API dengan
menggunakan library atau alat yang sesuai dalam bahasa pemrograman yang Anda gunakan.
Memproses data JSON sesuai kebutuhan Anda, misalnya dengan mengekstrak nilai-nilai
tertentu, menyimpan data ke basis data, atau menampilkannya dalam antarmuka pengguna.
Pastikan Anda mengacu pada dokumentasi API yang relevan dan menggunakan alat
pengembangan yang sesuai untuk membantu dalam mengambil dan memproses data JSON
dari API yang Anda gunakan.
Semoga penjelasan ini membantu Anda dalam memahami konsep dasar JSON dan
penggunaannya dalam pengembangan aplikasi menggunakan JSON APIs.
Kuis
Soal:
Pembahasan:
JSON merupakan singkatan dari JavaScript Object Notation. JSON digunakan sebagai format
data yang ringan dan mudah dibaca oleh manusia, terutama dalam pertukaran data antara
aplikasi web dan server.
Soal:
2. Apa tipe struktur data utama dalam JSON?
a. Objek (Object) dan Array
b. String dan Angka
c. Boolean dan Null
d. URL dan URI
Jawaban:
a. Objek (Object) dan Array
Pembahasan:
Tipe struktur data utama dalam JSON adalah objek (Object) dan array. Objek didefinisikan
dengan menggunakan kurung kurawal {} dan terdiri dari beberapa pasangan "kunci" dan "nilai".
Array didefinisikan dengan menggunakan kurung siku [] dan berisi beberapa elemen yang
dipisahkan oleh tanda koma.
Soal:
3. Kelebihan JSON APIs adalah:
a. Mendukung tipe data yang kompleks secara langsung
b. Memiliki overhead data yang lebih kecil
c. Tidak membutuhkan kompatibilitas lintas bahasa pemrograman
d. Ringan dan mudah dibaca
Jawaban:
d. Ringan dan mudah dibaca
Pembahasan:
Salah satu kelebihan JSON APIs adalah bahwa JSON merupakan format data yang ringan dan
mudah dibaca oleh manusia. JSON menggunakan format teks yang sederhana dan dapat
digunakan dengan berbagai bahasa pemrograman.
Soal:
4. JSON tidak mendukung tipe data berikut secara langsung:
a. Tanggal
b. String
c. Bilangan desimal
d. Array
Jawaban:
a. Tanggal
Pembahasan:
JSON tidak memiliki tipe data bawaan untuk tanggal, waktu, atau bilangan desimal. Namun, tipe
data ini dapat diwakili dengan menggunakan format string atau angka dalam JSON.
Soal:
5. Dalam industri apa JSON APIs sering digunakan untuk pertukaran data?
a. Industri Perbankan
b. Industri Perhotelan
c. Industri Sosial Media
d. Industri Pertanian
Jawaban:
c. Industri Sosial Media
Pembahasan:
JSON APIs sering digunakan dalam industri sosial media untuk pertukaran data antara server
dan klien. Contohnya, Twitter API menyediakan data tweet dalam format JSON, yang
memungkinkan pengembang untuk mengambil dan menampilkan tweet pada aplikasi.
6.2.4: GraphQL
Tujuan Pembelajaran
Pengenalan tentang GraphQL
Perbedaan GraphQL dengan tipe implementasi API lainnya
Kelebihan dan kekurangan GraphQL
Contoh penggunaan GraphQL dalam industri tertentu
Praktikum: Membangun GraphQL API sederhana menggunakan bahasa pemrograman tertentu
Catatan tambahan:
Setiap sesi akan mencakup penjelasan teori, studi kasus, dan diskusi kelompok.
Praktikum akan melibatkan penggunaan bahasa pemrograman tertentu, seperti Golang,
Python, JavaScript, atau Java. Peserta diharapkan memiliki pengetahuan dasar dalam salah
satu bahasa tersebut.
Materi tambahan seperti referensi bacaan dan sumber daya online akan diberikan kepada
peserta untuk membantu pemahaman lebih lanjut.
Evaluasi akan dilakukan melalui tugas-tugas praktikum, ujian kecil, atau proyek kecil berbasis
API.
==============
Dalam GraphQL, klien mendefinisikan struktur permintaan yang diinginkan dan mendapatkan
respons yang disesuaikan dengan struktur tersebut. Dengan GraphQL, klien memiliki kontrol
penuh terhadap data yang diterima, menghilangkan masalah over-fetching (mengambil data
yang tidak diperlukan) dan under-fetching (mengambil data secara parsial dan membutuhkan
permintaan tambahan).
Struktur Permintaan: Dalam REST, API memiliki endpoint yang mewakili satu sumber data atau
satu operasi yang telah ditentukan sebelumnya. Setiap endpoint memiliki format dan respons
yang telah ditentukan. Namun, dalam GraphQL, klien dapat mengirimkan permintaan dengan
struktur yang disesuaikan sepenuhnya dengan kebutuhan mereka. Klien dapat menentukan
secara tepat data apa yang ingin mereka ambil dan bagaimana mereka ingin data tersebut
diformat.
Over-fetching dan Under-fetching: Dalam REST, API sering mengalami masalah over-fetching
atau under-fetching data. Over-fetching terjadi ketika API mengirimkan lebih banyak data
daripada yang diperlukan oleh klien, sementara under-fetching terjadi ketika API tidak
menyediakan cukup data dan memerlukan permintaan tambahan. Dalam GraphQL, klien
memiliki kontrol penuh terhadap data yang diterima dan dapat menghindari masalah
over-fetching dan under-fetching tersebut.
Versi dan Dokumentasi: Dalam REST, ketika ada perubahan dalam skema data atau
fungsionalitas API, seringkali diperlukan untuk membuat versi baru dari API dan memberikan
dokumentasi yang jelas untuk setiap versi. Dalam GraphQL, skema data yang fleksibel dan
dokumentasi yang terintegrasi memungkinkan pengembang untuk menambahkan atau
mengubah fitur tanpa harus membuat versi baru dari API.
Kontrol Klien: Dalam GraphQL, klien memiliki kontrol penuh terhadap data yang diterima. Klien
dapat menentukan dengan tepat data apa yang mereka butuhkan dan bagaimana data tersebut
diformat. Ini mengurangi masalah over-fetching dan under-fetching.
Fleksibilitas: Dalam GraphQL, skema data yang fleksibel memungkinkan pengembang untuk
menambahkan atau mengubah fitur tanpa harus membuat versi baru dari API. Ini
memungkinkan pengembangan yang lebih cepat dan iteratif.
Kekurangan GraphQL:
Kompleksitas Server: Implementasi GraphQL pada sisi server membutuhkan pemahaman yang
mendalam tentang struktur data dan resolusi permintaan. Server harus menerjemahkan
permintaan GraphQL yang kompleks menjadi operasi database yang efisien.
Kinerja Query yang Buruk: Permintaan GraphQL yang buruk atau rumit dapat mengakibatkan
kinerja server yang buruk. Karena klien dapat menentukan struktur permintaan yang kompleks,
server harus secara cerdas mengeksekusi permintaan tersebut dengan efisien.
Misalnya, seorang klien ingin menampilkan halaman detail produk yang mencakup informasi
produk, ulasan terkait, dan rekomendasi produk terkait. Dengan GraphQL, klien dapat
mengirimkan permintaan dengan struktur yang mencakup hanya data yang dibutuhkan, seperti
judul produk, harga, ulasan terbaru, dan beberapa detail produk lainnya. Server dapat
mengeksekusi permintaan tersebut dan mengirimkan respons yang disesuaikan dengan
struktur permintaan.
Penggunaan GraphQL dalam industri e-commerce memungkinkan klien untuk mengoptimalkan
pengambilan data dan menghindari over-fetching atau under-fetching yang dapat
mempengaruhi kinerja dan pengalaman pengguna.
Menguji GraphQL API: Peserta akan menguji GraphQL API yang telah dibangun dengan
mengirimkan permintaan GraphQL menggunakan alat seperti GraphiQL atau Postman. Peserta
akan memverifikasi bahwa API memberikan respons yang sesuai dengan permintaan.
Selama praktikum, peserta akan diberikan materi tambahan berupa referensi bacaan dan
sumber daya online untuk membantu pemahaman lebih lanjut. Evaluasi akan dilakukan melalui
tugas-tugas praktikum, ujian kecil, atau proyek kecil berbasis API untuk memastikan
pemahaman peserta tentang konsep dan implementasi GraphQL.
Soal:
Pembahasan: GraphQL adalah sebuah bahasa query yang digunakan untuk mengambil dan
memanipulasi data. Pilihan b) "Sebuah protokol komunikasi antara server dan klien" tidak tepat
karena GraphQL bukanlah protokol, melainkan bahasa query. Pilihan c) "Sebuah metode
autentikasi untuk API" juga tidak tepat karena GraphQL bukanlah metode autentikasi. Pilihan d)
"Sebuah tipe implementasi API REST" juga tidak tepat karena GraphQL berbeda dengan
implementasi API REST.
Pembahasan: Kelebihan utama GraphQL adalah efisiensi jaringan dan kontrol klien. GraphQL
memungkinkan klien untuk mengambil semua data yang dibutuhkan dalam satu permintaan,
menghindari over-fetching dan under-fetching data. Selain itu, klien memiliki kontrol penuh
terhadap data yang diterima. Pilihan b), c), dan d) tidak mencakup kelebihan utama GraphQL.
Pembahasan: Perbedaan utama antara GraphQL dan REST terletak pada struktur permintaan
dan kompleksitas server. Dalam GraphQL, klien dapat mengirimkan permintaan dengan struktur
yang disesuaikan sepenuhnya dengan kebutuhan mereka, sementara REST memiliki endpoint
dan format respons yang telah ditentukan sebelumnya. Selain itu, implementasi GraphQL pada
sisi server membutuhkan pemahaman yang mendalam tentang struktur data dan resolusi
permintaan. Pilihan b), c), dan d) tidak mencakup perbedaan utama antara GraphQL dan REST.
Pembahasan: Dalam praktikum membangun GraphQL API, peserta perlu memahami cara
mengimplementasikan resolver, mengoperasikan server GraphQL, dan mendefinisikan skema
GraphQL. Resolver bertanggung jawab untuk mengeksekusi permintaan GraphQL dan
mengambil data yang diperlukan. Peserta juga harus memahami bagaimana menjalankan
server GraphQL dan mendefinisikan skema yang mencakup tipe data, tipe objek, tipe input, dan
relasi antar tipe.
Modul ini dirancang untuk memberikan pemahaman mendalam tentang tipe implementasi API
yang paling umum digunakan. Peserta diharapkan dapat mengerti konsep dasar, memahami
kelebihan dan kekurangan masing-masing tipe API, serta mampu menerapkannya dalam
pengembangan perangkat lunak.