Singkatan REST adalah singkatan dari REpresentational State Transfer, sedangkan API adalah singkatan dari Application Programming Interface. Bersama-sama, mereka merujuk ke REST API. REST API adalah layanan yang mentransfer permintaan dan respons antara dua sistem perangkat lunak, pada arsitektur REST.
Arsitektur REST membangun layanan web yang dapat diakses melalui URL menggunakan salah satu dari empat kata kerja permintaan: POST, GET, PUT, dan DELETE. Jadi, bisa dibilang REST API adalah software yang memungkinkan Anda membuat, membaca, mengupdate, dan menghapus resource melalui URL.
Anda dapat mempelajari cara membuat REST API menggunakan Spring Boot.
Menginisialisasi Aplikasi Spring Boot
Hal pertama yang harus Anda lakukan adalah biasakan diri Anda dengan dasar-dasar Musim Semi dan siapkan aplikasi Spring Boot. Anda harus mengubah dependensinya. Selain ketergantungan web, Anda harus mendapatkan ketergantungan Spring Data Java Persistent API (JPA), dan driver untuk database yang ingin Anda gunakan (aplikasi ini akan menggunakan MySQL).
Untuk REST API ini, Anda memerlukan pengontrol, model, dan repositori. Jadi, REST API akan memiliki struktur file berikut:
Membuat Model
Kelas pertama yang harus Anda buat adalah model pelanggan, yang menyimpan logika data.
kemasan com.onlineshopaholics.api.model;
impor jakarta.persistence. Kolom;
impor jakarta.persistence. Kesatuan;
impor jakarta.persistence. Nilai yang Dihasilkan;
impor jakarta.persistence. Tipe Generasi;
impor jakarta.persistence. Pengenal;
impor jakarta.persistence. Meja;@Meja(nama="pelanggan")
@Kesatuan
publikkelasPelanggan{
@Pengenal
@GeneratedValue(strategi = GenerationType. MOBIL)
pribadi id bilangan bulat;@Kolom(nama="Nama Pelanggan")
pribadi nama string;pribadi Email string;
publik Bilangan bulat getId(){
kembali pengenal;
}publikruang kosongsetId(Id bilangan bulat){
ini.id = id;
}publik Rangkaian getName(){
kembali nama;
}publikruang kosongsetName(Nama string){
ini.nama = nama;
}publik Rangkaian getEmail(){
kembali surel;
}
publikruang kosongsetEmail(Email rangkaian){
ini.email = surel;
}
}
Dari kelas pelanggan di atas, Anda akan melihat bahwa setiap pelanggan akan memiliki id, nama, dan email. Anda juga akan melihat beberapa anotasi yang memiliki tujuan berbeda.
- @Entity: Mendeklarasikan kelas pelanggan sebagai entitas JPA. Ini berarti bahwa JPA akan menggunakan bidang di kelas untuk membuat kolom di database relasional.
- @Tabel: Menentukan nama tabel yang akan dipetakan ke kelas model pelanggan.
- @Id: Menunjuk properti yang secara unik akan mengidentifikasi entitas dalam database.
- @GeneratedValue dan @GenerationType: Ini bekerja sama untuk menentukan strategi pembuatan otomatis untuk bidang yang terkait dengannya. Jadi, kolom id akan secara otomatis menghasilkan nilai unik setiap kali Anda membuat pelanggan baru.
- @Kolom: Menunjuk properti yang memetakan ke kolom dalam database. Jadi, properti name akan dipetakan ke kolom customername di database.
Membuat Repositori
Repositori ini akan memungkinkan Anda untuk berinteraksi dengan data pelanggan di database.
kemasan com.onlineshopaholics.api.repository;impor org.springframework.data.repositori. CrudRepository;
impor com.onlineshopaholics.api.model. Pelanggan;
publikantarmukaRepositori PelangganmemanjangCrudRepository<Pelanggan, Bilangan bulat>{}
Repositori pelanggan meluas CrudRepositoy Spring antarmuka, meneruskan kelas model Pelanggan bersama dengan jenis pengidentifikasi unik untuk entitas, Integer.
Antarmuka CrudRepository menyediakan akses ke lebih dari 10 operasi, termasuk metode CRUD generik yang Anda perlukan untuk REST API. Jadi, karena CrudRepository sudah mendefinisikan metode yang Anda perlukan, tidak perlu mendeklarasikannya secara eksplisit di antarmuka CustomerRepository.
Membuat Pengontrol
Pengontrol memungkinkan Anda untuk memperbarui data dalam database Anda menggunakan model dan repositori.
kemasan com.onlineshopaholics.api.controller;impor java.util. Opsional;
impor org.springframework.beans.factory.annotation. Kabel otomatis;
impor org.springframework.web.bind.anotasi. Hapus Pemetaan;
impor org.springframework.web.bind.anotasi. Dapatkan Pemetaan;
impor org.springframework.web.bind.anotasi. PathVariable;
impor org.springframework.web.bind.anotasi. Pasca Pemetaan;
impor org.springframework.web.bind.anotasi. PutMapping;
impor org.springframework.web.bind.anotasi. Badan Permintaan;
impor org.springframework.web.bind.anotasi. Pemetaan Permintaan;
impor org.springframework.web.bind.anotasi. RequestParam;
impor org.springframework.web.bind.anotasi. ResponseBody;
impor org.springframework.web.bind.anotasi. RestController;
impor com.onlineshopaholics.api.model. Pelanggan;
impor com.onlineshopaholics.api.repository. Repositori Pelanggan;
@RestController
@RequestMapping("/pelanggan")
publikkelasPengendaliPelanggan{
@Autowired
pribadi CustomerRepository customerRepository;
// buat pelanggan baru
@PostMapping("/menambahkan")
publik Pelanggan addNewCustomer(@RequestBody Pelanggan newCustomer){
pengguna pelanggan = baru Pelanggan();
user.setName (Pelanggan baru.getName());
pengguna.setEmail (Pelangganbaru.getEmail());
customerRepository.save (pengguna);
kembali pengguna;
}
// lihat semua pelanggan
@Dapatkan Pemetaan("Lihat semua")
publik@Respon TubuhIterablegetAllCustomers() {
kembali customerRepository.findAll();
}
// lihat pelanggan tertentu
@Dapatkan Pemetaan("lihat/{id}")
publik OpsionalgetCustomer(@PathVariable Integer id) {
kembali customerRepository.findById (id);
}
// perbarui pelanggan yang ada
@PutMapping("/edit/{id}")
publik Rangkaian memperbarui( @RequestBody Pelanggan memperbarui Pelanggan, @PathVariable Integer id){
kembali customerRepository.findById (id)
.map (pelanggan -> {
customer.setName (updateCustomer.getName());
pelanggan.setEmail (updatePelanggan.getEmail());
customerRepository.save (pelanggan);
kembali"Detail pelanggan telah berhasil diperbarui!";
}).orElseGet(() -> {
kembali"Pelanggan ini tidak ada";
});
}
// hapus pelanggan
@DeleteMapping("hapus/{id}")
publik Rangkaian menghapus(@PathVariable("pengenal")bilangan bulat id) {
customerRepository.deleteById (id);
kembali"Pelanggan telah berhasil dihapus!";
}
}
Pengontrol di atas melengkapi REST API dengan operasi CRUD, dengan menggunakan lima dari CrudRepository
- @RestController: Anotasi ini melayani dua tujuan. Ini menandai kelas untuk penemuan dengan pemindaian komponen. Itu juga memberi tahu Spring untuk menulis nilai pengembalian untuk semua metode, di kelas ini, di badan respons.
- @RequestMapping: Menentukan pola permintaan dasar yang akan ditangani oleh pengontrol. Jadi, pengontrol ini akan menangani semua permintaan ke "/pelanggan".
- @ResponseBody: Mengizinkan metode mengembalikan seluruh entitas.
- @RequestBody: Memungkinkan Anda mengonversi badan permintaan menjadi objek.
- @RequestParam: Memungkinkan Anda mengisolasi satu properti dari objek.
- @PathVariable: Memungkinkan Anda memetakan nilai permintaan ke placeholder. Ini memetakan ID yang diberikan ke metode hapus dengan nilai yang ada di database.
- @PostMapping: Memungkinkan Anda membuat sumber daya.
- @GetMapping: Memungkinkan Anda membaca data sumber daya.
- @PutMapping: Memungkinkan Anda memperbarui sumber daya.
- @DeleteMapping: Memungkinkan Anda untuk menghapus sumber daya.
Menghubungkan Database ke Aplikasi Anda
Untuk menghubungkan database ke aplikasi Spring apa pun, Anda harus menggunakan application.properties file di bawah folder sumber daya. File ini awalnya kosong, jadi Anda bisa mengisinya dengan properti yang sesuai untuk database yang ingin Anda gunakan. Aplikasi ini akan menggunakan database MySQL sehingga file application.properties akan berisi data sebagai berikut:
spring.jpa.hibernate.ddl-auto=perbarui
spring.jpa.open-in-view=false
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=root
spring.datasource.password=securepw
spring.datasource.driver-class-name=com.mysql.cj.jdbc. Pengemudi
Data di atas menunjukkan bahwa aplikasi ini akan terhubung ke database MySQL bernama onlineshopaholics, dengan username “root” dan “securepw” sebagai password. Langkah Anda selanjutnya adalah membuat database dan tabel pelanggan di MySQL.
Membuat Permintaan
Ada banyak alat yang dapat Anda gunakan untuk menguji REST API Anda. Tukang pos adalah alat pengujian REST API yang populer, dan Anda dapat menggunakannya untuk menguji API sederhana yang telah Anda buat. Setelah membuat tabel MySQL dan menjalankan aplikasi Spring, Anda dapat meluncurkan Postman dan bereksperimen dengan empat kata kerja permintaan.
Permintaan POST
Permintaan ini memungkinkan Anda membuat pelanggan baru menggunakan REST API. Untuk menyelesaikan permintaan ini, Anda harus pergi ke bagian tajuk dari permintaan kiriman Anda dan membuat tajuk baru (Tipe-Konten). Anda harus menyetel nilai header ini ke application/json, karena Anda akan membuat pelanggan baru menggunakan JSON.
Di badan permintaan, Anda harus mengubah jenisnya menjadi mentah dan memasukkan JSON Anda. Maka Anda harus memasukkan URL posting:
Mengirim permintaan akan mengembalikan respons berikut:
Anda dapat melihat bahwa permintaan berhasil, dan pelanggan baru juga memiliki id.
DAPATKAN Permintaan
Sekarang setelah Anda memiliki pelanggan, Anda dapat melihatnya dengan permintaan get yang mengembalikan semua pelanggan:
Atau setiap pelanggan dengan id:
Permintaan PUT
Anda dapat memperbarui Janet dengan nama belakang dan email baru.
HAPUS Permintaan
Anda juga dapat menghapus Janet dari database.
Uji Spring REST API Anda Menggunakan JUnit
Dengan Spring Boot, Anda dapat menguji aplikasi apa pun (termasuk REST API) menggunakan file pengujian Spring. Pengujian perangkat lunak penting untuk Spring Boot. Setiap aplikasi Spring yang diinisialisasi menggunakan JUnit untuk pengujian dan memungkinkan Anda mengirimkan permintaan ke REST API.