Anda di halaman 1dari 12

Materi 7

Working With REST API


(Retrofit dan Okhttp)

API adalah singkatan dari Application Programming Interface yaitu sebuah software
yang memungkinkan para developer untuk mengintegrasikan dan mengizinkan dua aplikasi yang
berbeda secara bersamaan untuk saling terhubung satu sama lain.
Tujuan penggunaan dari API adalah untuk saling berbagi data antar aplikasi yang berbeda
tersebut, dan juga untuk mempercepat proses pengembangan aplikasi dengan cara menyediakan
sebuah function yang terpisah sehingga para developer tidak perlu lagi membuat fitur yang
serupa.
REST API merupakan salah satu dari desain arsitektur yang terdapat di dalam API itu
sendiri. Dan cara kerja dari RESTful API yaitu REST client akan Melakukan akses pada
data/resource pada REST server dimana masing-masing resource. Atau data/resource tersebut
akan dibedakan oleh sebuah global ID atau URIs (Universal Resource Identifiers).
Jadi, Nantinya data yang diberikan oleh REST server itu bisa berupa format text, JSON atau
XML. Dan saat ini format yang paling populer dan paling banyak digunakan adalah format
JSON.
Adapun metode HTTP yang secara umum dipakai dalam REST api adalah:
• GET, berfungsi untuk membaca data/resource dari REST server
• POST, berfungsi untuk membuat sebuah data/resource baru di REST server
• PUT, berfungsi untuk memperbaharui data/resource di REST server
• DELETE, berfungsi untuk menghapus data/resource dari REST serve
• OPTIONS, berfungsi untuk mendapatkan operasi yang disupport pada resource dari
REST server.
Retrofit adalah sebuah library android yang membantu pengembang untuk melakukan
request ke sebuah endpoint REST API. Library ini dikembangkan oleh Square Inc
(https://github.com/square) sebuah perusahaan yang berbasis di Amerika Serikat. Library ini
menyederhanakan kode program yang digunakan untuk mengakses REST API. Tidak hanya untuk
mengakses REST API dengan proses sederhana (GET, POST, PUT, DELETE) retrofit juga
mendukung berbagai macam format authentikasi via http, menambahkan header pada request,
menambahkan parameter serta mengirim data berupa image ke server.
Untuk mengakses REST api dengan kode program bawaan android seorang programmer
harus membuat banyak worker dan thread menggunakan Async Task. Hal ini bukan sebuah proses
yang sederhana, apalagi jika request terhadap API tersebut menuntut adanya security, parameter
khusus yang harus ditambahkan atau bahkan mengirim data selain text contoh berupa gambar ke
server. Jika menggunakan Async Task dapat dipastikan programmer akan kesulitan dalam
membuat program. Akan lebih baik jika semua proses yang berhubungan dengan networking
tersebut ditangani oleh Retrofit. kita akan mencoba mengambil data dari
http://www.omdbapi.com/?s=batman&apikey=2268147d.
Langkah Praktikum REST API

1. Buat sebuah project baru


2. Isilah dengan parameter sebagai berikut

Project Name MovieProject


Package Name www.smktelkommlg.sch.id
Min SDK 25

Kemudian untuk kebutuhan library aplikasi yang akan dibuat, maka perlu ditambahkan
beberapa implementasi pada build.gradle, namun jika sudah ada di projeck kalian tidak perlu
ditambahkan, untuk versinya menyesuaikan saja.
//recyclerview
implementation 'androidx.recyclerview:recyclerview:1.0.0'

//Butterknife
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
implementation 'com.jakewharton:butterknife:10.2.3'

//for circle image


implementation 'de.hdodenhof:circleimageview:3.1.0'
//retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

//httpclient
implementation 'com.squareup.okhttp3:okhttp:4.9.0'

//Imageloader
implementation 'com.github.bumptech.glide:glide:4.12.0'

Karena aplikasi kita membutuhkan koneksi internet untuk mengakses API, maka aplikasi
harus diijinkan untuk mengakses internet. Silakan buka file manifest dan tambahkan kode uses-
permission.
3. Install Plugin RoboPOJOGenerator, buka File->Settings->Plugins - >Browse
repositories -> lalu ketikan RoboPojoGenerator -> install, Plugin untuk
membantu kita membuat class POJO dari JSON.
Setelah selesai restart android studionya.
4. Kita akan mengambil data-data JSON nya dari
http://www.omdbapi.com/?s=batman&apikey=2268147d
5. Buka url tersebut lalu copy semua data-data nya

6. Lalu kita generate data JSON tersebut menjadi object (POJO) dengan cara klik
kanan di package aplikasi à New à Generate POJO from
JSON
7. Paste data json disini, Framework pilih none, centang create setters dan
getters, kemudian Root object name buat MovieResponse, setelah itu pilih
Generate.

Kalo sudah maka akan terbuat 2 java class

Kemudian isi dari 2 file tersebut

MovieResponse.java
public class MovieResponse{
private String response;
private String totalResults;
private List<SearchItem> search;

public String getResponse(){


return response;
}

public void setTotalResults(String totalResults){


this.totalResults = totalResults;
}

public String getTotalResults(){


return totalResults;
}

public void setSearch(List<SearchItem> search){


this.search = search;
}

public List<SearchItem> getSearch(){


return search;
}
}
SearchItem.java

public class SearchItem{


private String type;
private String year;
private String imdbID;
private String poster;
private String title;

public void setType(String type){


this.type = type;
}

public String getType(){


return type;
}

public void setYear(String year){


this.year = year;
}

public String getYear(){


return year;
}

public void setImdbID(String imdbID){


this.imdbID = imdbID;
}

public String getImdbID(){


return imdbID;
}

public void setPoster(String poster){


this.poster = poster;
}

public String getPoster(){


return poster;
}

public void setTitle(String title){


this.title = title;
}

public String getTitle(){


return title;
}
}
8. Kemudian untuk file activity_main.xml, dan ubah menjadi seperti ini
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list_movies"
android:layout_width="match_parent"
android:layout_height="match_parent">

</androidx.recyclerview.widget.RecyclerView>

</RelativeLayout>

9. Buat layout baru dengan nama movie_adapter.xml, tambahkan code seperti


berikut

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_weight="1"
android:padding="10dp">

<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="90dp"
android:layout_height="90dp"
android:id="@+id/img_poster"
app:civ_border_width="2dp"
android:src="@mipmap/ic_launcher"/>

<TextView
android:id="@+id/title_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/img_poster"
android:textSize="24sp"
android:text="Judul" />

<TextView
android:id="@+id/realesed_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_below="@id/title_view"
android:layout_toRightOf="@id/img_poster"
android:textSize="24sp"
android:text="2000" />
<TextView
android:id="@+id/genre_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/img_poster"
android:textSize="24sp"
android:layout_below="@id/realesed_view"
android:layout_marginLeft="12dp"
android:text="Action" />

</RelativeLayout>

10. Selanjutnya kita buat class baru untuk adapternya, dengan nama MovieAdapter,
kemudian tambahkan kode seperti berikut, lihat gambar

extends RecyclerView.Adapter<MovieAdapter.ViewHolder>

Kemudian alt+enter pada RecyclerView, kemudian alt+enter pada class tersebut pilih
implement methods. Lihat Gambar.

Maka kode akan berubah seperti ini, tinggal menambahkan beberapa kode sesuai
berikut. Jika masih bergaris merah tinggal alt+enter pilih pilihan teratas.
MovieAdapter.java
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.ViewHolder>
{

public ArrayList<SearchItem> listMovies = new ArrayList<>();

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int
viewType) {
LayoutInflater layoutInflater =
LayoutInflater.from(parent.getContext());
View view = layoutInflater.inflate(R.layout.movie_adapter, parent,
false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int
position) {
holder.title_view.setText(listMovies.get(position).getTitle());
holder.released_view.setText(listMovies.get(position).getYear());
holder.genre_view.setText(listMovies.get(position).getType());

Glide.with(holder.itemView.getContext()).load(listMovies.get(position).getPoste
r()).into(holder.img_poster);

@Override
public int getItemCount() {
return listMovies.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

@BindView(R.id.img_poster)
CircleImageView img_poster;
@BindView(R.id.title_view)
TextView title_view;
@BindView(R.id.realesed_view)
TextView released_view;
@BindView(R.id.genre_view)
TextView genre_view;

public ViewHolder(@NonNull View itemView) {


super(itemView);
ButterKnife.bind(this, itemView);

}
}
}
11. Langkah selanjutnya adalah membuat sebuah interface dengan nama MovieService.java,
dengan cara klik kanan project pilih new à Java Class à Interface.
Di dalam interface ini berisi kumpulan service yang dibutuhkan oleh client (Android) dalam
berkomunikasi dengan server.
public interface MovieService {

@GET("/JSONParsingTutorial/jsonMovie")
Call<MovieService> getMovies();

Retrofit ini menggunakan library OkHttp sebagai core networkingnya. Untuk


menangani request di netwotk, harus disesuikan request method yang ada di protokol http.
Protokol itu antara lain yaitu :
GET
Method ini biasanya digunakan oleh klien untuk membaca data yang ada di server.
Method ini tidak menambahkan data ke server.
POST
Method ini biasanya digunakan klient untuk merequest penambahan data baru ( data yang
sebelumnya tidak ada) di sisi server.
PUT
Method ini biasanya digunakan untuk mengupdate data yang sudah ada di sisi server.
DELETE
Method ini biasanya digunakan untuk menghapus data yang sudah ada di sisi server.

12. RestClient.java
Selanjutnya kita buat class baru untuk object retrofit nya, dimana objek ini yang
bertanggung jawab menambahkan baseUrl dan jenis converter yang digunakan. Kenapa harus
ada converter dimunculkan di sini? server akan mengirimkan JSON Object sebagai bentuk
respon nya. Ketika sudah sampai ke HP Android, maka Android tidak bisa membaca JSON,
Android hanya bisa membaca data dalam format Java. Oleh karena itu diperlukan sebuah
converter untuk merubah JSON menjadi java

public class RestClient {


private static MovieService service;

public static MovieService getMovieService(){


if (service ==null) {
String API_BASE_URL =
"http://www.omdbapi.com/?s=batman&apikey=2268147d";
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit.Builder builder = new
Retrofit.Builder().baseUrl(API_BASE_URL).addConverterFactory(GsonConverterFacto
ry.create());

Retrofit retrofit = builder.client(httpClient.build()).build();


service = retrofit.create(MovieService.class);
}
return service;

}
}
13. MainActivity,java
Dan yang terakhir kita tampilkan data-data nya di mainactivity

public class MainActivity extends AppCompatActivity {

@BindView(R.id.list_movies)
RecyclerView listMovies;
MovieAdapter adapter;

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

adapter = new MovieAdapter();


listMovies.setLayoutManager(new LinearLayoutManager(this));
listMovies.setAdapter(adapter);
listMovies.addItemDecoration(new DividerItemDecoration(this,
DividerItemDecoration.VERTICAL));
RestClient.getMovieService().getMovies().enqueue(new
Callback<MovieResponse>() {

@Override
public void onResponse(Call<MovieResponse> call,
Response<MovieResponse> response) {
adapter.listMovies.addAll(response.body().getSearch());
adapter.notifyDataSetChanged();
}

@Override
public void onFailure(Call<MovieResponse> call, Throwable t) {

Toast.makeText(MainActivity.this,t.getMessage(),Toast.LENGTH_SHORT).show();

}
};
}

14. Jika sudah silahkan running aplikasinya.

Anda mungkin juga menyukai