Bagaimana API diuji - mari kita lihat contoh REST API | UNIX LINUX EXPLORE
Edit

Bagaimana API diuji - mari kita lihat contoh REST API

REST API (juga dikenal sebagai RESTful API) adalah antarmuka pemrograman aplikasi (API atau API web) yang sesuai dengan batasan gaya arsitektur REST dan memungkinkan interaksi dengan layanan web RESTful. REST merupakan singkatan dari representational state transfer dan diciptakan oleh ilmuwan komputer Roy Fielding.

Agar program yang berbeda dapat berkomunikasi satu sama lain, mereka menggunakan API - seperangkat aturan dan alat khusus. Bayangkan sebuah program datang ke sebuah kafe. Untuk melakukan pemesanan, program memilih beberapa item pada menu dan mencantumkannya ke pelayan. Pelayan adalah API yang menerima pesanan, meneruskannya ke dapur, yaitu ke program masak lain, dan kemudian membawakan program pertama apa yang dipesannya.

Ternyata API itu seperti penerjemah universal yang membantu program bertukar data dan fungsi. Cukup menambahkan beberapa fungsi dengan permintaan yang diperlukan ke dalam kode, dan kemudian, misalnya, aplikasi cuaca di ponsel cerdas akan meminta data dari server data meteorologi, dan kemudian menampilkan ramalan yang sesuai kepada pengguna.


1. Apa itu API?

API adalah sekumpulan definisi dan protokol untuk membangun dan mengintegrasikan perangkat lunak aplikasi. API terkadang disebut sebagai kontrak antara penyedia informasi dan pengguna informasi—yang menetapkan konten yang dibutuhkan dari konsumen (panggilan) dan konten yang dibutuhkan oleh produsen (respons). Misalnya, desain API untuk layanan cuaca dapat menentukan bahwa pengguna memberikan kode pos dan produsen membalas dengan jawaban yang terdiri dari dua bagian, yang pertama adalah suhu tinggi, dan yang kedua adalah suhu rendah.

Dengan kata lain, jika Anda ingin berinteraksi dengan komputer atau sistem untuk mengambil informasi atau menjalankan suatu fungsi, API membantu Anda mengomunikasikan apa yang Anda inginkan ke sistem tersebut sehingga sistem tersebut dapat memahami dan memenuhi permintaan tersebut.

Anda dapat menganggap API sebagai mediator antara pengguna atau klien dan sumber daya atau layanan web yang ingin mereka dapatkan. API juga merupakan cara bagi suatu organisasi untuk berbagi sumber daya dan informasi sambil menjaga keamanan, kontrol, dan autentikasi—menentukan siapa yang mendapatkan akses ke apa.

Keuntungan lain dari API adalah Anda tidak perlu mengetahui secara spesifik tentang caching, bagaimana sumber daya anda diambil atau dari mana asalnya.


2. curl

Ada kalanya Anda perlu memastikan bahwa API berfungsi sebagaimana mestinya dan menyampaikan apa yang dibutuhkan. Agar tidak menguji semuanya pada program nyata, mereka membuatnya lebih sederhana dan menguji API menggunakan alat terpisah.

Curl (singkatan dari Client URL Request Library) adalah alat baris perintah untuk mentransfer data. Anda dapat memeriksa instalasi dengan perintah curl --version. Jika semuanya terinstal dengan benar, Anda akan melihat informasi singkat tentang versi program.

runtu@runtu-desktop:~$ curl --versioncurl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.17Release-Date: 2022-01-05Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets zstd

Terkadang dokumentasi API menyediakan templat untuk permintaan melalui curl, tetapi jika tidak tersedia, Anda dapat menggunakan permintaan GET yang sebenarnya. Untuk melakukan ini, sebelum permintaan pada baris perintah, Anda perlu menulis curl. Misalnya kita ingin mendapatkan anime acak dari database MyAnimeList yang memiliki Jikan API. Jika suatu program meminta anime acak ini, program tersebut akan menggunakan perintah GET "https://api.jikan.moe/v4/random/anime". 

$ curl https://api.jikan.moe/v4/random/anime

Dalam kasus pemeriksaan kami menggunakan curl, perintah diatas akan terlihat seperti ini:




Kemudian, kami mengirim permintaan dan melihat tanggapannya yang sulit untuk diuraikan. Hasilnya, perhatikan gambar di bawah ini.



Agar kontennya dapat dimengerti, kita memerlukan utilitas baris perintah lain yaitu dengan menambahkan opsi "jq". Anda dapat menginstal versi yang diperlukan untuk sistem anda di situs web resmi.

Setelah instalasi, Anda perlu menambahkan di akhir permintaan | jq:

$ curl https://api.jikan.moe/v4/random/anime | jq

Beberapa layanan secara khusus disesuaikan untuk bekerja dengan curl. Anda tidak dapat menggunakan alat untuk melakukan curl. Sebagai contoh, Anda dapat menggunakan "curl wttr.in" dan mengirim ke akun Anda.


3. Postman

Postman adalah salah satu utilitas pengujian API paling populer. Anda dapat mengunduh versi desktop, menggunakan aplikasi web, atau menginstal plugin untuk lingkungan pengembangan Visual Studio Code. Postman memiliki versi berbayar, tetapi versi gratisnya cukup untuk sebagian besar tugas pengujian.

Untuk mulai menggunakan aplikasi web, Anda perlu membuat akun di postman.com. Kami menemukan plugin untuk VS Code di bagian ekstensi.



Untuk bekerja dengan Postman, anda perlu membuat proyek baru. Untuk melakukan ini, buka tab Ruang Kerja di situs Postman.



Dan tambahkan yang baru dengan mengklik tombol Buat Ruang Kerja.



Beberapa dokumentasi API memiliki opsi untuk dijalankan langsung di Postman. Misalnya, SpaceX API memiliki tombol seperti ini.



Setelah berpindah ke halaman lain, layanan akan menanyakan versi mana yang ingin kita gunakan dengan API.

Saat berpindah dari dokumentasi API ke salah satu versi, Tukang Pos akan meminta Anda memilih proyek mana yang akan diimpor API yang ingin kami uji. Dalam versi online akan terlihat seperti ini.



Sekarang di panel sebelah kiri kami telah membagi ke dalam folder semua opsi permintaan yang dapat dikirim ke SpaceX: informasi tentang kapsul, peluncuran, peralatan, kru. Kami tidak tahu seberapa cocok data ini dengan kenyataan, tapi kedengarannya keren.



Ketika kita memilih salah satu opsi kueri, secara otomatis dimasukkan ke dalam jendela kerja. Misalnya, jika kita memilih folder Rockets → Dapatkan semua permintaan Rockets dan klik tombol Kirim berwarna biru, kita akan menerima 460 baris JSON dengan informasi tentang roket.






4. Python
Python - atau bahasa pemrograman lainnya - adalah pilihan lain untuk menguji API. Jika Anda sedang menulis aplikasi Anda sendiri dan ingin menambahkan antarmuka pemrograman untuk bekerja dengan layanan lain, metode ini adalah yang paling nyaman.

Untuk mengirim permintaan dengan Python, Anda perlu menambahkan perpustakaan dengan fungsi yang diperlukan. Ada beberapa perpustakaan seperti itu, kami akan menambahkannya requests. Pertama kita install dengan perintah pip install requests, yang dapat anda ketikkan di shell terminal.

$ pip install requests

atau dapat langsung anda kerjakan di IDE tempat Anda bekerja.



Mari kita coba mengirimkan permintaan ke Numbers API menggunakan templat kode dari dokumentasi RapidAPI. Pertama kita mengimpor perpustakaan Python

$ import requests

Sekarang mari kita ambil URL dari permintaan fakta matematika dan menyimpannya dalam sebuah variabel:

$ url = "https://numbersapi.p.rapidapi.com/1729/math"

Menurut instruksi RapidAPI, kita perlu menambahkan parameter header tambahan ke permintaan. Salah satunya adalah token pribadi Anda, kunci API. Anda dapat melihatnya di sini.



Misalnya, kami memasukkan token palsu, jadi agar permintaan berfungsi, Anda harus memasukkan kode Anda sendiri di bawah di seberang kunci "x-rapidapi-key".

headers = {
    "x-rapidapi-key": "cbas234jl2lkj23lj324lj3lj34j23ljs09sdf234jksdf0dsfs90fs70",
    "x-rapidapi-host": "numbersapi.p.rapidapi.com"
}

Setelah itu, Anda dapat membuat permintaan. Untuk menyimpan data, kami mendeklarasikan variabel lain dan menambahkan URL dan header ke permintaan.

$ response = requests.get(url, headers=headers)

Untuk melihat hasilnya, mari tampilkan permintaan di layar dalam format teks. Sebelum ini, mari kita tambahkan pemeriksaan kode status respon dari server. Jika kodenya 200, teks respons dapat ditampilkan. Jika server mengembalikan kode yang berbeda, kami akan menampilkan kode kesalahan.

# jika kode status permintaan berhasil diterima dari server,

# tampilkan respons dalam format teks
if response.status_code == 200:
   print(response.text)
# jika permintaan kode status kesalahan diterima dari server,
# tampilkan kode status ini
else:
   print(f"Запрос не удался. Код ошибки: {response.status_code}")

Jika kita menjalankan seluruh kode ini dengan kunci API asli, kita akan mendapatkan respons berikut:

1729 is the smallest natural number representable in two different ways as a sum of two positive cubes, as Ramanujan stated on the spot.

Sekarang mari kita coba mengganti 1729format yang tidak sesuai - mari kita tulis abcd:

# mendeklarasikan variabel dengan alamat tujuan pengiriman permintaan
url = "https://numbersapi.p.rapidapi.com/abcd/math"

Kita akan mendapat pesan kesalahan karena tipe nilai dalam bidang ini harus berupa bilangan bulat. Kami tidak akan melihat ini di pesan kesalahan kami karena kami sedang memeriksa kode status server. Kami akan menerima ini:

Permintaan gagal. Kode kesalahan: 404


5. Cara mengeluarkan satu nilai dari respons

Terkadang respons datang dalam bentuk nilai JSON yang besar atau daftar, namun kita hanya memerlukan satu hal dari keseluruhan array. Untuk melakukan ini, Anda dapat menggunakan indeks dan kunci.

Respons dari SpaceX API terhadap permintaan semua peluncuran datang dalam bentuk daftar. Kami akan mendapatkan tiga fakta spesifik dari sana: nama peluncuran, tanggal dan detailnya.

Pertama, impor perpustakaan dan tentukan alamat permintaan:

# impor perpustakaan ke dalam proyek
import requests
# buat permintaan di alamat yang ditentukan dalam dokumentasi
response = requests.get("https://api.spacexdata.com/v4/launches")

Untuk dapat mengekstrak data berdasarkan kunci, kami menerjemahkan respons ke dalam format JSON:

# konversi respons ke format json
data = response.json()

Sekarang kami memilih satu set kunci untuk jenis peluncuran tertentu. Kami akan mengambil yang pertama sebagai contoh:

# sorot informasi tentang peluncuran pertama
latest_launch = data[1]

Sekarang kami mengambil informasi ini dan menyimpan nilai untuk kunci yang diperlukan ke dalam setiap variabel - nama_luncuran, tanggal_luncuran, detail_luncuran. Setelah ini kami menampilkan nilai di layar.

# dapatkan nilai berdasarkan kunci: nama, tanggal peluncuran, detail
launch_name = latest_launch['name']
launch_date = latest_launch['date_utc']
launch_details = latest_launch['details']
# cetak setiap nilai yang diterima secara terpisah
print('launch_name: ', launch_name)
print('launch_date: ', launch_date)
print('launch_details: ', launch_details)

Catatan:

launch_name: DemoSat

launch_date: 2007-03-21T01:10:00.000Z

launch_details: Pembakaran tahap pertama berhasil dan transisi ke tahap kedua, ketinggian maksimum 289 km, Pematian mesin prematur pada T+7 menit 30 detik, Gagal mencapai orbit, Gagal memulihkan tahap pertama.

Sekarang setelah kita mengetahui cara kerja REST API paling populer, lain kali kita akan menggunakan salah satu kerangka kerja untuk menulis API dan menulis kerangka kerja kita sendiri.

Postingan Lebih Baru Postingan Lama