Materi M14 API Pada Python
Materi M14 API Pada Python
P E R T E M U A N K E 1 4 – A P I
FILTERING
Saat ini, pengguna hanya dapat melihat seluruh data, mereka
tidak dapat memfilter atau menemukan data tertentu. Meskipun ini
bukan masalahsaat ini, namun akan dengan cepat menjadi kurang
berguna saat jumlah data semakin bertambah banyak. Di bagian
ini, kita akan menambahkan fungsi yang memungkinkan pengguna
memfilter hasil yang dikembalikan menggunakan permintaan yang
lebih spesifik.
FILTERING
Setelah kita memperbarui API dengan fungsi api_id, jalankan kode
seperti sebelumnya dan kunjungi URL di bawah untuk menguji
kemampuan pemfilteran baru:
FILTERING
Masing-masing dari URL di atas akan mengembalikan data yang
berbeda, kecuali yang terakhir, yang akan mengembalikan data
kosong: [], karena tidak ada buku yang nilai idnya 3.
(Penghitungan array dalam pemrograman biasanya dimulai dari 0,
jadi id=3 akan menjadi permintaan untuk item keempat yang tidak
ada.)
FILTERING
Penjelasan Kode :
Dalam kode ini, pertama-tama kita membuat fungsi baru, yang
disebut api_id, dengan sintaks @app.route yang memetakan
fungsi ke jalur /api/v1/resources/books. Artinya fungsi ini akan
berjalan ketika kita mengakses
http://127.0.0.1:5000/api/v1/resources/books. (Perhatikan bahwa
mengakses tautan ini tanpa memberikan ID akan memberikan
pesan kesalahan yang kita berikan dalam kode: Kesalahan: "Error:
No id field provided. Please specify an id.".)
FILTERING
Di dalam fungsi ini, kita melakukan dua hal:
FILTERING
Kemudian bagian ini menelusuri katalog data buku, lalu
mencocokkan buku-buku yang memiliki ID yang diberikan, dan
menambahkannya ke daftar yang akan dikembalikan ke pengguna.
Sejauh ini, kita telah membuat API yang berfungsi dengan data uji yang kita sediakan langsung di aplikasi. Sebelum membangun lebih banyak
fungsionalitas ke dalam aplikasi kita, mari kita renungkan beberapa keputusan desain API yang telah kita buat sejauh ini. Dua aspek dari API
yang baik adalah kegunaan (usability) dan pemeliharaan (maintainability), dan saat kita membangun lebih banyak fungsionalitas ke dalam API,
akan lebih banyak hal yang harus kita pertimbangkan.
Filosofi desain yang berlaku dari API modern disebut REST. Hal terpenting dalam REST terdapat pada empat metode yang ditentukan oleh
protokol HTTP: POST, GET, PUT, dan DELETE. Ini sesuai dengan empat tindakan tradisional yang dilakukan pada data dalam database:
CREATE, READ, UPDATE, dan DELETE.
Karena request HTTP sangat integral dengan penggunaan REST API, banyak prinsip desain berkisar pada bagaimana permintaan harus
diformat. Kita telah membuat satu request HTTP, yang mengembalikan semua buku yang disediakan dalam data di aplikasi kita. Untuk
memahami pertimbangan dalam memformat request ini, pertama-tama mari kita pertimbangkan contoh endpoint API yang lemah atau didesain
dengan buruk:
Format request ini memiliki sejumlah masalah. Yang pertama adalah semantik—dalam REST API, kata kerja biasanya GET, POST, PUT, atau
DELETE, dan ditentukan oleh metode request, bukan dari URL request. Itu berarti bahwa kata "get" seharusnya tidak muncul dalam request,
karena "get" menyatakan bahwa kita menggunakan metode HTTP GET. Selain itu, koleksi data seperti buku atau pengguna harus
dilambangkan dengan kata benda jamak. Ini memperjelas saat API merujuk ke koleksi (books) atau data (book). Dengan menggabungkan
prinsip-prinsip ini, API kita akan terlihat seperti ini:
Request di atas menggunakan bagian dari path (/10) untuk memberikan ID. Meskipun ini bukan pendekatan yang tidak biasa, ini agak tidak
fleksibel—dengan URL yang dibuat dengan cara ini, kita hanya dapat memfilter menurut satu parameter pada satu waktu. Query parameter
memungkinkan pemfilteran berdasarkan beberapa parameter dan lebih masuk akal saat memberikan data “opsional”, seperti format keluaran:
Saat merancang bagaimana request ke API yang terstruktur, masuk akal juga untuk merencanakan penambahan di masa mendatang.
Meskipun versi API Anda saat ini hanya menyajikan informasi tentang satu jenis sumber daya—buku, misalnya—masuk akal untuk
merencanakan seolah-olah Anda mungkin menambahkan sumber daya lain atau fungsionalitas non-sumber daya ke API Anda di masa
mendatang:
Menambahkan segmen tambahan di path Anda seperti "resources" atau "entries" memberi Anda opsi untuk mengizinkan pengguna menelusuri
semua sumber daya yang tersedia, sehingga memudahkan Anda untuk nanti mendukung request seperti ini:
Cara lain untuk merencanakan API Anda adalah dengan menambahkan nomor versi ke path. Artinya, jika Anda harus mendesain ulang API,
Anda dapat terus mendukung versi lama API di bawah nomor versi lama sambil merilis versi terbaru, misalnya, versi kedua (v2) dengan
fungsionalitas yang ditingkatkan atau berbeda. Dengan cara ini, aplikasi dan skrip yang dibuat menggunakan versi lama API Anda tidak akan
berhenti berfungsi setelah peningkatan versi Anda.
Tanpa dokumentasi, bahkan API dengan desain terbaik pun tidak akan dapat digunakan. API Anda harus memiliki dokumentasi yang
menjelaskan sumber daya atau fungsionalitas yang tersedia melalui API Anda yang juga menyediakan contoh kerja nyata dari request URL
atau kode untuk API Anda. Anda harus memiliki bagian untuk setiap sumber daya yang menjelaskan parameter mana, seperti id atau judul,
yang diterimanya. Setiap bagian harus memiliki contoh dalam bentuk sampel request HTTP atau blok kode.
Praktik yang cukup umum dalam mendokumentasikan API adalah memberikan anotasi dalam kode Anda yang kemudian secara otomatis
disusun ke dalam dokumentasi menggunakan alat seperti Doxygen atau Sphinx. Alat-alat ini membuat dokumentasi dari komentar dalam
bentuk docstrings yang Anda buat pada definisi fungsi Anda. Meskipun dokumentasi semacam ini adalah ide yang bagus, Anda tidak boleh
menganggap pekerjaan Anda selesai jika Anda hanya mendokumentasikan API Anda ke level ini. Sebagai gantinya, coba bayangkan diri Anda
sebagai pengguna potensial API Anda dan berikan contoh yang berfungsi. Di dunia yang ideal, Anda akan memiliki tiga jenis dokumentasi
untuk API Anda: referensi yang merinci setiap route dan perilakunya, panduan yang menjelaskan referensi dalam bentuk prosa, dan setidaknya
satu atau dua tutorial yang menjelaskan setiap langkah secara detail.
Beberapa contoh dokumentasi API :
• http://api.repo.nypl.org/
• https://www.mediawiki.org/wiki/API:Main_page
• https://datahelpdesk.worldbank.org/knowledgebase/articles/889392-api-documentation
• https://developer.nytimes.com/
• https://pro.europeana.eu/resources/apis
Tim Penyusun:
1. Albertus Bayu Aji Priyono
PROGRAM STUDI INFORMATIKA
UNIVERSITAS GUNADARMA