Dalam pemrograman aplikasi kita mempunyai beberapa komponen, jika kita bagi menjadi
tier sebuah aplikasi, maka dapat dibagi menjadi beberapa bagian.
Untuk program sederhana kita dapat membagi menjadi 2 yaitu Front End dan Backend.
Sedangkan untuk program kompleks yang melibatkan banyak aplikasi, biasanya dibagi
menjadi 3 bagian besar yaitu Front End, Middletier dan BackEnd.
Front End biasanya berhubungan dengan User Interface. Dapat berupa desktop, web atau
mobile.
Sedangkan Back End biasanya berhubungan dengan logic aplikasi dan akses ke database.
Service A
Service B Database
Service C
Frontend Backend
Berdasarkan gambar tersebut, FrondEnd membutuhkan akses agar dapat mengakses data
yang disediakan oleh Backend. Maka, selain mengatur logic sebuah program, backend juga
bertugas membuat interface agar layanan yang diberikan dapat diakses oleh FrontEnd.
Ada beberapa framework yang dapat digunakan untuk membuat sebuah aplikasi Backend.
Contohnya:
1. Java: Spring, Grails, Play
2. Node Js
3. PHP: Laravel
4. Dan lain – lain
Pada saat ini kita akan membuat Backend Service berbasis Java dengan Spring Boot.
1. Menggenerate Project
Untuk mempermudah, Spring menyediakan web Spring Initializr untuk membantu
kita menggenerate spring project. Dapat diakses di URL berikut:
https://start.spring.io/
Setelah membuka web berikut, kita dapat melakukan setting awal untuk
menggenerate project spring kita.
Contohnya
Ketika kita meng-klik tombol generate, maka akan ada file zip yang terdownload
dengan nama mahasiswa.zip.
2. Setting POM
POM (Project Object Model) merupakan sebuah file XML yang berisi informasi dan
konfigurasi dari project kita. Jika kita membuat project dengan maven maka kita
membutuhkan file ini. POM berisi versi Spring, versi Java yang digunakan, list
dependency yang dibutuhkan dalam project kita dan kebutuhan lain untuk
melakukan kompilasi.
Pada awal tadi, di web Spring Initializr telah kita masukkan 2 dependency, sehingga
di POM yang tergenerate, dependency tersebut sudah muncul. Silakan lihat file POM
pada mahasiswa.zip Anda.
4. Membuat interface
a. Buatlah package controller di bawah package mahasiswa
b. Buatlah java Class bernama HelloController.java di dalam package controller.
@RestController
public class HelloController {
@Autowired
HelloService service;
@GetMapping(value = "/hello")
public @ResponseBody
String getUser() throws Exception {
return service.hello();
}
}
5. Menjalankan code
Jalankan code dengan klik tombol run bertanda panah / play di sebelah kan atas
intellij
Kemudian buka browser dan ketik localhost:8080/hello
Ketika telah muncul halaman seperti diatas, artinya kita telah berhasil membuat
service dengan method GET yang mempunyai uri: /hello dan mengembalikan string
Hello World.
Selain method GET, berikut adalah method lain yang perlu diketahui dan sering digunakan:
HTTP
CRUD ENTIRE COLLECTION (E.G. /USERS) SPECIFIC ITEM (E.G. /USERS/123)
METHOD
201 (Created), ‘Location’ header with link to /users/{id}
POST Create Avoid using POST on single resource
containing new ID.
200 (OK), list of users. Use pagination, sorting and filtering to 200 (OK), single user. 404 (Not Found), if ID not
GET Read
navigate big lists. found or invalid.
405 (Method not allowed), unless you want to update every 200 (OK) or 204 (No Content). Use 404 (Not
PUT Update/Replace
resource in the entire collection of resource. Found), if ID not found or invalid.
Partial 405 (Method not allowed), unless you want to modify the 200 (OK) or 204 (No Content). Use 404 (Not
PATCH
Update/Modify collection itself. Found), if ID not found or invalid.
405 (Method not allowed), unless you want to delete the 200 (OK). 404 (Not Found), if ID not found or
DELETE Delete
whole collection — use with caution. invalid.
Pada function yang kita buat sebelumnya (Dengan method GET), kita membuat contoh
dengan path uri: /hello. Kita perlu mengetahui standar naming dalam pembuatan sebuah
Rest URL.
2. Request Body : digunakan untuk mengirim dan menerima data melalui REST API
4. Query Param : biasanya dipisah / ditandai dengan tanda tanya ( ? ) dan digunakan
untuk parameter pencarian data.