Kali ini saya membuat tulisan mengenai Rest API menggunakan Play Framework khususnya java pada play framework
Sebelumnya, apa itu play framework?
Play Framework adalah framework open souce aplikasi web yang ditulis dengan Scala dan juga pemrograman lainnya seperti Java.
Biasanya pemrograman yang menggunakan java membutuhkan waktu untuk proses build dan deploy. Nah, dengan menggunakan framework ini, hasil coding tersebut hanya cukup kita save dan refresh browser atau postman untuk melihat hasil coding yang kita kerjakan.
Terkadang ada juga pemrograman yang menggunakan java harus restart server terlebih dahulu, padahal yang di edit hanya sedikit line code.
Typesafe Activator merupakan platform yang bisa digunakan untuk membuat dan menjalankan project play framework. Untuk download typesafe activator dapat di download pada link berikut: http://typesafe.com/activator
atau jika anda menggunakan mac, cukup gunakan perintah berikut pada terminal anda :
brew install typesafe-activator
Tanpa basa-basi kita create new project dulu ya . .
- Create new ProjectPertama buka terminal terlebih dahulu, dan pergi ke direktori dimana kita akan create project baru kita
Gambar 1 Kemudian ketik perintah : activator newGambar 2 Maka akan muncul beberapa pilihan seperti gambar di atas (Gambar 2). dan kita akan memilih nomor 5Gambar 3 Pada gambar diatas (Gambar 3) project sudah berhasil di create dengan nama project (play-java)Untuk menjalankannya : activator runGambar 4 untuk testing di postman atau di browser : //localhost:9000Gambar 5 Tampilan awal Play Framework - Konfigurasi database
Tambahkan code-code berikut pada file:
Pada file build.sbt : - Models
Selanjutnya kita akan membuat modelpackage models; import com.avaje.ebean.Model; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "anggota") public class Anggota extends Model { @Id private Integer id_anggota; private String nama_anggota; private String alamat_anggota; public Integer getId_anggota() { return id_anggota; } public void setId_anggota(Integer id_anggota) { this.id_anggota = id_anggota; } public String getNama_anggota() { return nama_anggota; } public void setNama_anggota(String nama_anggota) { this.nama_anggota = nama_anggota; } public String getAlamat_anggota() { return alamat_anggota; } public void setAlamat_anggota(String alamat_anggota) { this.alamat_anggota = alamat_anggota; } }
- Controller
Dan ini untuk controllerpackage controllers; import repository.AnggotaRepository; import com.fasterxml.jackson.databind.JsonNode; import models.Anggota; import org.springframework.beans.factory.annotation.Autowired; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; import java.util.List; public class AnggotaController extends Controller { @Autowired AnggotaRepository anggotaRepository; public Result viewAnggota(String nama){ List<Anggota> anggotas = anggotaRepository.cocoTasks(nama);
return ok(Json.toJson(anggotas));
} public Result listAnggota(){ List<Anggota> anggotas = anggotaRepository.cocoList();return ok(Json.toJson(anggotas));
} public Result createAnggota() { JsonNode json = request().body().asJson();Anggota anggota = new Anggota();
anggota = (Anggota)Json.fromJson(json,Anggota.class);
anggota.save();
return ok(Json.toJson(anggota));
} public Result updateAnggota(){JsonNode json = request().body().asJson();
} public Result delete(Integer id_anggota){ Anggota anggota = anggotaRepository.findById(id_anggota); if(anggota==null){ return notFound(Json.toJson("Anggota not Found")); } anggota.delete(); return ok(Json.toJson("Anggota "+id_anggota+"has been deleted")); } }
Anggota anggota = new Anggota(); anggota = (Anggota)Json.fromJson(json, Anggota.class); anggota.update(); return ok(Json.toJson(anggota));
- Repository
Dalam project sederhana ini, saya buat file repository. Dimana dalam file ini berisi query-query data yang saya gunakanpackage repository; import com.avaje.ebean.Model;import models.Anggota; import java.util.List; public class AnggotaRepository { public static Model.Finder<Integer, Anggota> find = new Model.Finder<Integer, Anggota>(Integer.class, Anggota.class); public static List<Anggota> cocoTasks(String nama){ return find .query().where() .ilike("nama_anggota","%"+nama+"%") .orderBy("id_anggota").findList(); } public static List<Anggota> cocoList(){ return find.orderBy("id_anggota").findList(); } public static Anggota findById(Integer id_anggota){ return find.byId(id_anggota); } }
- Mapping
Action-action yang sudah kita code dalam controller dapat kita mapping. Untuk mapping dapat di kita lakukan pada file play-java/conf/routes# Routes # This file defines all application routes (Higher priority routes first) # ~~~~ # An example controller showing a sample home page GET / controllers.HomeController.index GET /anggota/nama_anggota=:nama_anggota controllers.AnggotaController.viewAnggota(nama_anggota:String) GET /list-anggota controllers.AnggotaController.listAnggota() POST /create-anggota controllers.AnggotaController.createAnggota() POST /update-anggota controllers.AnggotaController.updateAnggota() DELETE /delete-anggota/:id_anggota controllers.AnggotaController.delete(id_anggota:Integer) # An example controller showing how to use dependency injection GET /count controllers.CountController.count # An example controller showing how to write asynchronous code GET /message controllers.AsyncController.message # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
- Demo
- Action CreateGambar 6. Action Create
- Action ViewGambar 7. List Anggota Gambar 8. search by nama anggota
- Action UpdateGambar 9. Action Update
- Action DeleteGambar 10. Action Delete
Begitu lah sharing singkat mengenai Rest API using Play Framework
Sekian dari saya dan semoga tulisan ini bermanfaat.
Terima kasih,
Salam
Reference :
- https://www.playframework.com/documentation/
- http://www.baeldung.com/rest-api-with-play
- https://www.youtube.com/watch?v=qKxgtmuPjHQ
Pada file plugins.sbt :
Pada file application.conf :
No comments:
Post a Comment