Notification texts go here Contact Us

Simple Retrofit Library for Al-Qur'an Endpoint

Retrofit Library Al-Qur'an Endpoint. Menggunakan Retrofit dalam Android untuk berkomunikasi dengan API, mengonversi JSON ke objek Java secara efisien.

Potongan file JSON dari Endpoint Al-Qur'an

[{
    "arti": "Pembukaan",
    "asma": "الفاتحة",
    "audio": "http://ia802609.us.archive.org/13/items/quraninindonesia/001AlFaatihah.mp3",
    "ayat": 7,
    "keterangan": "Surat <i>Al Faatihah</i> (Pembukaan) yang diturunkan di Mekah dan terdiri dari 7 ayat adalah surat yang pertama-tama diturunkan dengan lengkap  diantara surat-surat yang ada dalam Al Quran dan termasuk golongan surat Makkiyyah. Surat ini disebut <i>Al Faatihah</i> (Pembukaan), karena dengan surat inilah dibuka dan dimulainya Al Quran. Dinamakan <i>Ummul Quran</i> (induk Al Quran) atau <i>Ummul Kitaab</i> (induk Al Kitaab) karena dia merupakan induk dari semua isi Al Quran, dan karena itu diwajibkan membacanya pada tiap-tiap sembahyang.<br> Dinamakan pula <i>As Sab'ul matsaany</i> (tujuh yang berulang-ulang) karena ayatnya tujuh dan dibaca berulang-ulang dalam sholat.",
    "nama": "Al Fatihah",
    "nomor": "1",
    "rukuk": "1",
    "type": "mekah",
    "urut": "5"
  },
  {
    "arti": "Sapi Betina",
    "asma": "البقرة",
    "audio": "http://ia802609.us.archive.org/13/items/quraninindonesia/002AlBaqarah.mp3",
    "ayat": 286,
    "keterangan": "Surat <i>Al Baqarah</i> yang 286 ayat itu turun di Madinah yang sebahagian besar diturunkan pada permulaan tahun Hijrah, kecuali ayat 281 diturunkan di Mina pada Hajji wadaa' (hajji Nabi Muhammad s.a.w. yang terakhir). Seluruh ayat dari surat Al Baqarah termasuk golongan Madaniyyah, merupakan surat yang terpanjang di antara surat-surat Al Quran yang di dalamnya terdapat pula ayat yang terpancang (ayat 282). Surat ini dinamai <i>Al Baqarah</i> karena di dalamnya disebutkan kisah penyembelihan sapi betina yang diperintahkan Allah kepada Bani Israil (ayat 67 sampai dengan 74), dimana dijelaskan watak orang Yahudi pada umumnya. Dinamai <i>Fusthaatul-Quran</i> (puncak Al Quran) karena memuat beberapa hukum yang tidak disebutkan dalam surat yang lain. Dinamai juga surat  <i>alif-laam-miim</i> karena surat ini dimulai dengan Alif-laam-miim.",
    "nama": "Al Baqarah",
    "nomor": "2",
    "rukuk": "40",
    "type": "madinah",
    "urut": "87"
  }]

File JSON tersebut berisi dua objek dalam bentuk larik (array). Mari kita jelaskan setiap elemen dari objek tersebut:

Objek Pertama:

[{
     "arti": "Pembukaan",
     "asma": "الفاتحة",
     "audio": "http://ia802609.us.archive.org/13/items/quraninindonesia/001AlFaatihah.mp3",
     "ayat": 7,
     "keterangan": "Surat <i>Al Faatihah</i> (Pembukaan) yang diturunkan di Mekah dan terdiri dari 7 ayat adalah surat yang pertama-tama diturunkan dengan lengkap diantara surat-surat yang ada dalam Al Quran dan termasuk golongan surat Makkiyyah. Surat ini disebut <i>Al Faatihah</i> (Pembukaan), karena dengan surat inilah dibuka dan dimulainya Al Quran. Dinamakan <i>Ummul Quran</i> (induk Al Quran) atau <i>Ummul Kitaab</i> (induk Al Kitaab) karena dia merupakan induk dari semua isi Al Quran, dan karena itu diwajibkan membacanya pada tiap-tiap sembahyang.<br> Dinamakan pula <i>As Sab'ul matsaany</i> (tujuh yang berulang-ulang) karena ayatnya tujuh dan dibaca berulang-ulang dalam sholat.",
     "nama": "Al Fatihah",
     "nomor": "1",
     "rukuk": "1",
     "type": "mekah",
     "urut": "5"
   }]
  • `arti`: Arti atau terjemahan dari nama surat.
  • `asma`: Nama surat dalam aksara Arab.
  • `audio`: URL audio yang terkait dengan surat ini.
  • `ayat`: Jumlah ayat dalam surat.
  • `keterangan`: Informasi tambahan tentang surat, termasuk konteks sejarah dan kegunaannya.
  • `nama`: Nama surat dalam bahasa Arab.
  • `nomor`: Nomor urut surat dalam Al Quran.
  • `rukuk`: Jumlah rukuk (rukuk adalah bagian dari sebuah surat dalam Al Quran).
  • `type`: Tipe surat, dalam hal ini "mekah".
  • `urut`: Urutan ke- dalam Al Quran.

Objek Kedua:

[{
     "arti": "Sapi Betina",
     "asma": "البقرة",
     "audio": "http://ia802609.us.archive.org/13/items/quraninindonesia/002AlBaqarah.mp3",
     "ayat": 286,
     "keterangan": "Surat <i>Al Baqarah</i> yang 286 ayat itu turun di Madinah yang sebahagian besar diturunkan pada permulaan tahun Hijrah, kecuali ayat 281 diturunkan di Mina pada Hajji wadaa' (hajji Nabi Muhammad s.a.w. yang terakhir). Seluruh ayat dari surat Al Baqarah termasuk golongan Madaniyyah, merupakan surat yang terpanjang di antara surat-surat Al Quran yang di dalamnya terdapat pula ayat yang terpancang (ayat 282). Surat ini dinamai <i>Al Baqarah</i> karena di dalamnya disebutkan kisah penyembelihan sapi betina yang diperintahkan Allah kepada Bani Israil (ayat 67 sampai dengan 74), dimana dijelaskan watak orang Yahudi pada umumnya. Dinamai <i>Fusthaatul-Quran</i> (puncak Al Quran) karena memuat beberapa hukum yang tidak disebutkan dalam surat yang lain. Dinamai juga surat <i>alif-laam-miim</i> karena surat ini dimulai dengan Alif-laam-miim.",
     "nama": "Al Baqarah",
     "nomor": "2",
     "rukuk": "40",
     "type": "madinah",
     "urut": "87"
}]
  • Setiap properti memiliki makna yang sama seperti pada objek pertama, hanya nilai-nilai properti yang berbeda sesuai dengan informasi yang berkaitan dengan surat kedua dalam Al Quran.
Ini adalah representasi data dalam format JSON yang memberikan informasi tentang dua surat dalam Al Quran beserta detail terkait seperti arti, nama, nomor urut, jumlah ayat, dan lainnya. JSON digunakan secara umum dalam pertukaran data antara server dan aplikasi karena struktur datanya yang ringkas dan mudah dibaca oleh manusia serta diuraikan oleh mesin.

build.gradle:

[implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0']
Ini adalah bagian dari berkas `build.gradle` dalam proyek Android Anda. Dua baris ini menambahkan dependensi ke proyek Anda menggunakan sistem manajemen dependensi Gradle. Berikut adalah penjelasan singkat dari setiap dependensi:
  • `com.squareup.retrofit2:retrofit:2.9.0`: Ini adalah dependensi untuk Retrofit, sebuah library HTTP client untuk Android dan Java yang mempermudah pengembangan aplikasi berbasis web. Dengan menggunakan Retrofit, Anda dapat dengan mudah berkomunikasi dengan API web.
  • `com.squareup.retrofit2:converter-gson:2.9.0`: Ini adalah dependensi untuk Gson Converter, yang merupakan bagian dari Retrofit. Gson Converter memungkinkan Anda mengonversi JSON ke objek Java dan sebaliknya. Gson sendiri adalah library untuk mengonversi objek Java ke dan dari representasi JSON.

AndroidManifest.xml:

[<uses-permission android:name="android.permission.INTERNET" />]
Ini adalah bagian dari berkas `AndroidManifest.xml`, yang menyediakan informasi konfigurasi dasar untuk aplikasi Android Anda. Baris ini menambahkan izin yang diperlukan agar aplikasi dapat menggunakan layanan internet. Dalam hal ini, izin `INTERNET` diperlukan karena Anda kemungkinan besar akan menggunakan Retrofit untuk berkomunikasi dengan API web, yang membutuhkan koneksi internet.
Dengan menambahkan dependensi Retrofit dan izin internet ini, Anda telah menyiapkan proyek Anda untuk berkomunikasi dengan server web melalui Retrofit, dan Anda memiliki izin yang diperlukan untuk menggunakan koneksi internet pada perangkat Android.

MainActivity.java

File `MainActivity.java` yang Anda berikan adalah bagian dari proyek Android yang menggunakan Retrofit untuk mengambil data dari API dan menampilkannya di antarmuka pengguna. Mari kita jelaskan setiap bagian secara rinci:

Import Libraries:

   [import androidx.appcompat.app.AppCompatActivity;
   import android.os.Bundle;
   import android.widget.TextView;
   import retrofit2.Call;
   import retrofit2.Callback;
   import retrofit2.Response;
   import retrofit2.Retrofit;
   import retrofit2.converter.gson.GsonConverterFactory;
   import java.util.List;]
Ini adalah bagian impor yang mengimpor berbagai kelas yang diperlukan untuk membuat aplikasi Android yang menggunakan Retrofit untuk berkomunikasi dengan API dan Gson untuk mengonversi data JSON ke objek Java.

Deklarasi Kelas MainActivity:

   [public class MainActivity extends AppCompatActivity {]
Kelas ini menggantikan kelas induk `AppCompatActivity`, yang menyediakan dukungan fitur-fitur modern di semua versi Android.

Deklarasi Variabel:

   [private TextView textViewResult;]
Variabel `textViewResult` digunakan untuk menampilkan hasil permintaan data dari API ke antarmuka pengguna melalui elemen TextView.

Metode `onCreate`:

   [@Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       textViewResult = findViewById(R.id.text_view_result);]
Metode ini dipanggil ketika aktivitas dibuat. Ini menetapkan tata letak antarmuka pengguna dari file `activity_main.xml` dan mendapatkan referensi ke elemen TextView yang akan menampilkan hasil.

Inisialisasi Retrofit:

   [Retrofit retrofit = new Retrofit.Builder()
           .baseUrl("https://al-quran-8d642.firebaseio.com/") // Ganti "your_base_url_here" dengan URL sebenarnya
           .addConverterFactory(GsonConverterFactory.create())
           .build();]

Ini menginisialisasi objek Retrofit dengan mengatur URL dasar dan konverter Gson, yang memungkinkan Retrofit mengonversi data JSON ke objek Java.

Membuat Objek JsonPlaceHolderApi:

   [JsonPlaceHolderApi jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);]
Ini membuat objek dari antarmuka `JsonPlaceHolderApi` yang berisi deklarasi endpoint-endpoint API yang akan diakses.

Mengirim Permintaan Retrofit:

   [Call<List<Post>> call = jsonPlaceHolderApi.getPosts();

   call.enqueue(new Callback<List<Post>>() {
       @Override
       public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
           if (!response.isSuccessful()) {
               textViewResult.setText("Code: " + response.code());
               return;
           }

           List<Post> posts = response.body();
           StringBuilder contentBuilder = new StringBuilder();

           for (Post post : posts) {
               // Membangun string hasil dari objek Post dan menambahkannya ke StringBuilder
               contentBuilder.append("Nama: ").append(post.getNama()).append("\n")
                       .append("Asma: ").append(post.getAsma()).append("\n")
                       .append("Audio: ").append(post.getAudio()).append("\n")
                       .append("Ayat: ").append(post.getAyat()).append("\n")
                       .append("Keterangan: ").append(post.getKeterangan()).append("\n\n");
           }

           // Menetapkan hasil ke TextView
           textViewResult.setText(contentBuilder.toString());
       }

       @Override
       public void onFailure(Call<List<Post>> call, Throwable t) {
           textViewResult.setText(t.getMessage());
       }
   });]
Ini adalah penggunaan Retrofit untuk mengirim permintaan ke API menggunakan metode `getPosts()` yang didefinisikan di dalam antarmuka `JsonPlaceHolderApi`. Hasilnya diolah di dalam metode `onResponse` dan jika permintaan gagal, kesalahan ditampilkan melalui metode `onFailure`. Hasilnya kemudian ditampilkan dalam elemen TextView.

Post.java

File `Post.java` yang Anda berikan adalah sebuah kelas Java yang mewakili entitas atau objek dari data yang diterima dari server melalui Retrofit. Mari kita bahas setiap bagian dengan rinci:

Deklarasi Kelas:

   [public class Post {]

Ini adalah awal dari deklarasi kelas `Post`.

Anotasi SerializedName:

   [@SerializedName("nama")
   private String nama;

   @SerializedName("asma")
   private String asma;

   @SerializedName("audio")
   private String audio;

   @SerializedName("ayat")
   private int ayat;

   @SerializedName("keterangan")
   private String keterangan;

   @SerializedName("nomor")
   private int nomor;

   @SerializedName("rukuk")
   private int rukuk;

   @SerializedName("type")
   private String type;

   @SerializedName("urut")
   private int urut;]
  • `@SerializedName`: Anotasi ini berasal dari library Gson (yang digunakan oleh Retrofit untuk mengonversi JSON ke objek Java). Anotasi ini digunakan untuk memberikan nama yang sesuai antara atribut dalam kelas Java dengan nama yang ada dalam data JSON yang diambil dari server.
  • Setiap atribut dalam kelas `Post` mewakili field-field yang diambil dari data JSON. Misalnya, atribut `nama` akan diisi dengan nilai dari kunci "nama" dalam data JSON, dan begitu seterusnya.

Metode Getter:

   [public String getNama() {
       return nama;
   }

   public String getAsma() {
       return asma;
   }

   public String getAudio() {
       return audio;
   }

   public int getAyat() {
       return ayat;
   }

   public String getKeterangan() {
       return keterangan;
   }

   public int getNomor() {
       return nomor;
   }

   public int getRukuk() {
       return rukuk;
   }

   public String getType() {
       return type;
   }

   public int getUrut() {
       return urut;
   }]
  • Setiap atribut memiliki metode getter yang mengembalikan nilai atribut tersebut. Ini memungkinkan untuk mendapatkan nilai dari objek `Post` setelah memperoleh data dari server.
Kelas `Post` ini digunakan oleh Retrofit untuk mengonversi respons JSON dari server menjadi objek Java. Anotasi `@SerializedName` membantu dalam pencocokan nama kunci JSON dengan atribut dalam kelas Java. Metode getter digunakan untuk mendapatkan nilai dari objek `Post` setelah proses konversi.

JsonPlaceHolderApi.java

File `JsonPlaceHolderApi.java` adalah sebuah antarmuka (interface) yang mendefinisikan kontrak untuk mengakses API menggunakan Retrofit. Mari kita jelaskan setiap bagian dengan rinci:

Deklarasi Antarmuka:

   [public interface JsonPlaceHolderApi {]
Ini adalah deklarasi antarmuka `JsonPlaceHolderApi`. Antarmuka ini akan digunakan oleh Retrofit untuk membuat implementasi klien HTTP yang dapat digunakan untuk berkomunikasi dengan API.

Anotasi `@GET`:

   [@GET("data.json?print=pretty") // Ganti "your_api_endpoint_here" dengan URL sebenarnya]
  • Anotasi `@GET` memberikan informasi bahwa metode ini akan digunakan untuk mengirim permintaan HTTP GET. URL relatif endpoint API ditentukan dalam anotasi ini.
  • Dalam contoh ini, endpoint yang digunakan adalah "data.json?print=pretty". Harap diganti dengan URL sebenarnya yang sesuai dengan API yang Anda akses.

Metode `getPosts()`:

   [Call<List<Post>> getPosts();]
  • Ini adalah metode yang dideklarasikan dalam antarmuka yang akan digunakan oleh Retrofit untuk membuat permintaan ke endpoint yang didefinisikan sebelumnya.
  • `Call<List<Post>>`: Ini adalah tipe kembalian dari metode. `Call` adalah tipe khusus yang diberikan oleh Retrofit untuk menangani respons dari server. Dalam hal ini, kita mengharapkan daftar (`List`) dari objek `Post`.
  • `getPosts()`: Nama metode yang sesuai dengan endpoint API yang akan diakses. Dalam konteks ini, kita mengambil daftar posting (posts) dari API.
Jadi, secara keseluruhan, `JsonPlaceHolderApi` adalah antarmuka yang memberikan kontrak untuk mengakses endpoint tertentu pada API. Retrofit akan menggunakan antarmuka ini untuk membuat implementasi klien HTTP yang dapat digunakan dalam aplikasi Android Anda untuk berkomunikasi dengan server dan mengambil data.


Android, Retrofit, Retrofit Library, Library, Android Studio


Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.