Media Pengembangan Web & App | by APPKEY

Pembuatan Website Backend Tutorial Membuat REST API Spring Boot

Tutorial Membuat REST API Spring Boot

-

REST API adalah salah satu dari desain arsitektur yang berada di dalam API itu sendiri. REST dengan menjadi standar untuk membangun layanan web pada suatu situs karena mudah dibuat dan digunakan.

REST cocok digunakan pada dunia layanan mikro. REST menerapkan prinsip web, termasuk arsitektur, manfaat, dan lainnya. Menggunakan REST sangat bermanfaat bagi Anda para developer karena web dan protokol intinya, HTTP, menyediakan banyak fitur diantaranya:

  1. Cocok untuk actions seperti get, post, put, delete dan lain-lain.
  2. Melakukan cache
  3. Mengalihkan dan meneruskan
  4. Keamanan seperti enskripsi dan autentikasi.

Fitur tersebut merupakan faktor penting dalam membangun layanan yang resilien. Namun, hal tersebut belum sepenuhnya. Web dibangun dengan banyak spesifikasi kecil, sehingga dapat berkembang dengan mudah, tanpa terjebak dalam standar.

Developer dapat memanfaatkan toolkit pihak ketiga yang menerapkan spesifikasi beragam ini dan secara instan memiliki teknologi klien dan server di ujung jari mereka. Dengan membangun di atas HTTP, REST API akan menyediakan sarana untuk membuat beberapa hal berikut:

  1. API yang kompatibel dengan versi sebelumnya
  2. API yang Dapat Dikembangkan
  3. Layanan berskala
  4. Layanan yang aman
  5. Spektrum layanan stateless hingga stateful

Perlu diingat bahwa REST bukanlah standar, melainkan sebuah pendekatan, gaya, sekumpulan batasan pada arsitektur Anda yang dapat membantu Anda membangun sistem skala web. Spring Boot dapat bekerja dengan IDE apa pun.

Anda dapat menggunakan Eclipse, IntelliJ IDEA, Netbeans, dll. Spring Tool Suite adalah distribusi IDE berbasis Eclipse open-source yang menyediakan superset dari distribusi Java EE dari Eclipse. Hal ini mencakup fitur yang membuat bekerja dengan aplikasi Spring menjadi lebih mudah.

Ini sama sekali tidak diperlukan. Tetapi pertimbangkan itu jika Anda menginginkan ekstra penekanan tombol Anda. Pada tutorial ini kami akan menampilkan tutorial membuat REST API dengan Spring Boot.

Membuat Payroll Sederhana

rest-api-1

Kami akan menggunakan contoh pembuatan manajemen karyawan. Hal pertama yang dilakukan adalah membuat Payroll service yang sederhana yang dapat digunakan untuk melakukan manajemen karyawan dari suatu perusahaan.

Pada tutorial ini akan dilakukan penyimpanan objek employee dalam database (H2 dalam memori), dan mengaksesnya (melalui sesuatu yang disebut JPA). Kemudian kami akan membungkusnya dengan sesuatu yang akan memungkinkan akses melalui internet (disebut lapisan Spring MVC). Kode berikut  adalah cara mendefinisikannya pada sistem nonrest / src / main / java / payroll / EmployeeController.java

package payroll;
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
class Employee {
private @Id @GeneratedValue Long id;
private String name;
private String role;
Employee() {}
Employee(String name, String role) {
this.name = name;
this.role = role;
}

public Long getId() {
return this.id;
}

public String getName() {
return this.name;
}

public String getRole() {
return this.role;
}

public void setId(Long id) {
this.id = id;
}

public void setName(String name) {
this.name = name;
}

public void setRole(String role) {
this.role = role;
}

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof Employee))
return false;
Employee employee = (Employee) o;
return Objects.equals(this.id, employee.id) && Objects.equals(this.name, employee.name)
&& Objects.equals(this.role, employee.role);
}

@Override
public int hashCode() {
return Objects.hash(this.id, this.name, this.role);
}
@Override
public String toString() {
return "Employee{" + "id=" + this.id + ", name='" + this.name + '\'' + ", role='" + this.role + '\'' + '}';
}
}

Kelas Java ini berisi:

  1. @Entity adalah anotasi JPA untuk membuat objek ini siap disimpan di penyimpanan data berbasis JPA.
  2. id, name, dan role adalah atribut dari employee atribut object domain. id ditandai dengan lebih banyak anotasi JPA untuk menunjukkan bahwa itu adalah kunci utama dan diisi secara otomatis oleh penyedia JPA.
  3. Konstruktor khusus dibuat saat perlu membuat instance baru, tetapi belum memiliki id.
Artikel Terkait  Mengenal Hibernate, Framework Backend Java Terpopuler
Artikel Terkait  Synology Inc.: Multi-Version Backup sebagai Solusi Hadapi Cyber Crime!

Dengan menggunakan definisi objek domain ini, sekarang kita dapat beralih ke Spring Data JPA untuk menangani interaksi database. Repositori JPA Spring Data adalah antarmuka dengan metode yang mendukung pembuatan, pembacaan, pembaruan, dan penghapusan catatan terhadap penyimpanan data back end.

Beberapa repositori juga mendukung paging data dan pengurutan. Spring Data mensintesis implementasi berdasarkan konvensi yang ditemukan dalam penamaan metode di antarmuka. Ada beberapa implementasi repositori selain JPA.

Anda dapat menggunakan Spring Data MongoDB, Spring Data GemFire, Spring Data Cassandra, dll. Untuk tutorial ini, kami akan tetap menggunakan JPA. Spring memudahkan pengaksesan data.

Dengan hanya mendeklarasikan antarmuka EmployeeRepository berikut, kami secara otomatis akan dapat melakukan berbagai hal seperti create new employee, update, delete, dan find employees.

Klik kanan dan jalankan PayRollApplication maka Anda akan mendapatkan:

...
2018-08-09 11:36:26.169 INFO 74611 --- [main] payroll.LoadDatabase : Preloading Employee(id=1, name=Bilbo Baggins, role=burglar)
2018-08-09 11:36:26.174 INFO 74611 --- [main] payroll.LoadDatabase : Preloading Employee(id=2, name=Frodo Baggins, role=thief)
...

Membuat HTTP sebagai Platform

rest-api-2

Untuk melakukan wrap repositori Anda dengan lapisan web, Anda harus beralih ke Spring MVC. Berkat Spring Boot, hanya ada sedikit infrastruktur untuk dikodekan. Sebaliknya, kita bisa fokus pada tindakan:

nonrest / src / main / java / payroll / EmployeeController.java
package payroll;

import java.util.List;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
class EmployeeController {
private final EmployeeRepository repository;
EmployeeController(EmployeeRepository repository) {
this.repository = repository;
}

// Aggregate root
// tag::get-aggregate-root[]
@GetMapping("/employees")
List<Employee> all() {
return repository.findAll();
}
// end::get-aggregate-root[]

@PostMapping("/employees")
Employee newEmployee(@RequestBody Employee newEmployee) {
return repository.save(newEmployee);
}

// Single item
@GetMapping("/employees/{id}")
Employee one(@PathVariable Long id) {

return repository.findById(id)
.orElseThrow(() -> new EmployeeNotFoundException(id));
}

@PutMapping("/employees/{id}")
Employee replaceEmployee(@RequestBody Employee newEmployee, @PathVariable Long id) {
return repository.findById(id)
.map(employee -> {
employee.setName(newEmployee.getName());
employee.setRole(newEmployee.getRole());
return repository.save(employee);
})
.orElseGet(() -> {
newEmployee.setId(id);
return repository.save(newEmployee);
});
}

@DeleteMapping("/employees/{id}")
void deleteEmployee(@PathVariable Long id) {
repository.deleteById(id);
}
}

  1. @RestController menunjukkan bahwa data yang dikembalikan oleh setiap metode akan ditulis langsung ke dalam isi respons alih-alih merender template.
  2. EmployeeRepository dimasukkan oleh konstruktor ke dalam pengontrol.
  3. Ada rute untuk setiap operasi (@GetMapping, @PostMapping, @PutMapping dan @DeleteMapping, sesuai dengan panggilan HTTP GET, POST, PUT, dan DELETE). Hal ini akan sangat berguna untuk membaca setiap metode dan memahami apa yang dilakukan.
  4. EmployeeNotFoundException adalah pengecualian yang digunakan untuk menunjukkan saat karyawan mencari tetapi tidak ditemukan.
Artikel Terkait  Belajar Komputasi Terdistribusi dengan Hadoop | Framework Big Data
Artikel Terkait  Rekomendasi Backend Service Terbaik Untuk GraphQL

Saat ‘EmployeeNotFoundException’ muncul, informasi tambahan konfigurasi Spring MVC ini digunakan untuk merender HTTP 404:

package payroll;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

@ControllerAdvice
class EmployeeNotFoundAdvice {

@ResponseBody
@ExceptionHandler(EmployeeNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
String employeeNotFoundHandler(EmployeeNotFoundException ex) {
return ex.getMessage();
}
}

Jika Anda ingin meluncurkan aplikasi, maka klik kanan ‘public static void main’ pada PayRollApplication dan pilih Run dari IDE Anda atau Spring Initializr akan menggunakan Maven Wrapper jadi dapat mengetik:

$ ./mvnw clean spring-boot:run

Kode alternatif yang dapat Anda gunakan adalah versi Maven yaitu:

$ mvn clean spring-boot:run

Ketika aplikasi ini memulai, kita dapat menggunakan

$ curl -v localhost:8080/employees

Maka hasilnya:

* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /employees HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Thu, 09 Aug 2018 17:58:00 GMT
<

* Connection #0 to host localhost left intact
[{"id":1,"name":"Bilbo Baggins","role":"burglar"},{"id":2,"name":"Frodo Baggins","role":"thief"}]

Di sini Anda dapat melihat data pre-loaded, dan mendapat format kompak. Jika Anda mencoba dan kueri pengguna tidak ada

$ curl -v localhost:8080/employees/99

Maka Anda akan mendapatkan:

* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /employees/99 HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 404
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 26
< Date: Thu, 09 Aug 2018 18:00:56 GMT
<
* Connection #0 to host localhost left intact
Could not find employee 99

Langkah ini adalah langkah untuk membuat dasar REST, Anda dapat mengubahnya menjadi RESTful, atau REST API. Khusus pada tutorial ini kami akan menjadikannya REST API.

Artikel Terkait  Apa Itu Arduino? Penjelasan serta Kelebihan dan Kekurangannya

3. Mengubahnya menjadi REST API.

Artikel Terkait  Analisis Detail Firebase Backend Service

Anda selalu dapat menambahkan kolom (bidang) ke tabel database. Prinsip ini juga digunakan untuk membuat RESTful. Tambahkan kolom baru ke representasi JSON Anda, tetapi jangan hapus apa pun. Seperti ini:

{
"id": 1,
"firstName": "Bilbo",
"lastName": "Baggins",
"role": "burglar",
"name": "Bilbo Baggins",
"_links": {
"self": {
"href": "http://localhost:8080/employees/1"
},
"employees": {
"href": "http://localhost:8080/employees"
}
}
}

Setelah ini maka employee akan merekam kedua handle klien baik yang lama maupun baru. Maka kodenya akan berubah sepetri ini:

package payroll;
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
class Employee {
private @Id @GeneratedValue Long id;
private String firstName;
private String lastName;
private String role;

Employee() {}
Employee(String firstName, String lastName, String role) {
this.firstName = firstName;
this.lastName = lastName;
this.role = role;
}

public String getName() {
return this.firstName + " " + this.lastName;
}
public void setName(String name) {
String[] parts = name.split(" ");
this.firstName = parts[0];
this.lastName = parts[1];
}

public Long getId() {
return this.id;
}
public String getFirstName() {
return this.firstName;
}
public String getLastName() {
return this.lastName;
}
public String getRole() {
return this.role;
}

public void setId(Long id) {
this.id = id;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setRole(String role) {
this.role = role;
}
@Override
public boolean equals(Object o) {

if (this == o)
return true;
if (!(o instanceof Employee))
return false;
Employee employee = (Employee) o;
return Objects.equals(this.id, employee.id) && Objects.equals(this.firstName, employee.firstName)
&& Objects.equals(this.lastName, employee.lastName) && Objects.equals(this.role, employee.role);
}
@Override
public int hashCode() {
return Objects.hash(this.id, this.firstName, this.lastName, this.role);
}

@Override
public String toString() {
return "Employee{" + "id=" + this.id + ", firstName='" + this.firstName + '\'' + ", lastName='" + this.lastName
+ '\'' + ", role='" + this.role + '\'' + '}';
}
}

Penjelasan terkait kelas ini adalah:

1. bidang name digantikan oleh firstName dan lastName. Di sini Anda dapat menambahkan nama-nama karyawan sesuai kebutuhan.

2. Getter “virtual” untuk properti nama lama, getName () didefinisikan di sini. Hal ini menggunakan bidang firstName dan lastName untuk menghasilkan nilai.

3. Penyetel “virtual” untuk properti nama lama juga ditentukan, setName (). Ini mem-parsing string yang masuk dan menyimpannya ke bidang yang sesuai.

Berikut adalah hasil akhir pada database.

log.info("Preloading " + repository.save(new Employee("Bilbo", "Baggins", "burglar")));
log.info("Preloading " + repository.save(new Employee("Frodo", "Baggins", "thief")));

Itulah penjelasan terkait dengan REST API dan cara membuatnya. Anda dapat mengubah kode-kode yang ada di sini sesuaikan dengan kebutuhan Anda. Selamat mencoba.


Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.

Jasa Pembuatan Aplikasi

Jasa Pembuatan Website

Jasa Pembuatan Paket Aplikasi

Jasa Pembuatan Internet Marketing

Subscribe Sekarang

Dapatkan beragam informasi menarik tentang Website, Aplikasi, Desain, Video dan API langsung melalui email Anda. Subscribe sekarang dan terus belajar bersama kami!

Kategori

Blog Post Ranking 10

Rekomendasi 10 Aplikasi Pembuat Animasi 3D Terbaik. Ayo Cek!

Apakah Anda bercita-cita untuk menjadi seorang animator profesional? Belajar membuat animasi kini sudah menjadi hal mudah yang bisa dilakukan...

Cara Mudah Menambahkan Lokasi Alamat Bisnis Anda di Google Maps

Saat ingin hunting tempat makan atau tempat nongkrong terbaru, tak jarang beberapa dari Anda biasanya mendapatkan informasi terkini melalui...

Proses Komunikasi: Encoding dan Decoding

Jika kita dapat melihat percakapan antar komputer, mungkin akan terlihat seperti ini: "010110111011101011010010110". Bahasa ini disebut dengan biner, encoding...

Metadata Adalah? Fungsi dan Jenis-Jenis Metadata

Pernah mendengar istilah metadata? Mungkin, kita sering mendengar istilah metadata. Tetapi, banyak dari kita yang belum tahu arti dari metadata...

Pengertian Internet & Dampak Positif dan Negatif Internet

Internet mungkin bukan sesuatu yang asing lagi, sebab semua kalangan pasti tahu apa itu internet. Hanya saja jika ditanya...

Membuat Aplikasi di Playstore dengan Mudah

Membuat aplikasi di Playstore bisa Anda lakukan dengan mudah. Terdapat beberapa situs yang bisa membantu Anda untuk membuat aplikasi...

Domain Google? Apa Bedanya Dengan Domain Biasa?

Saat memutuskan untuk membuat website menjadi salah satu bentuk media digital marketing Anda dalam bersaing di zaman digital ini,...

7 Aplikasi Membuat Aplikasi Android Secara Offline

Aplikasi membuat aplikasi android saat ini banyak dicari penekun IT untuk membuat aplikasi Android secara offline tanpa harus menggunakan...

10 Aplikasi Coding Android Terbaik

Ketersediaan aplikasi coding Android memang banyak dicari oleh orang-orang yang sedang atau akan memulai untuk membuat aplikasi android. Jika...

Looping Adalah Algoritma Perulangan: Berikut Contohnya

Jika anda sudah mendalami atau sedang mendalami dunia pemrograman terdapat sebuah konsep yang dapat memudahkan anda dalam menyusun struktur...

Bisnis

Online Service

Peluang Bisnis

Model Bisnis

Entrepreneurship

Uang

Ketrampilan

Outsourcing

Monetize

Pemasaran

SEO

Internet Marketing

Dasar Pemasaran

Strategi Pemasaran

Situs Web Analitik

Iklan

Teknologi

Teknologi Terbaru

AI

Komputer

Jaringan

Paling Sering dibaca
Mungkin Anda Menyukainya