Pernahkah Anda ingin membuat aplikasi web atau layanan mikro dengan Java, tetapi merasa kewalahan dengan kompleksitas dan konfigurasi yang terlibat? Jika ya, Anda tidak sendirian. Banyak pengembang berjuang dengan tantangan pengembangan web, seperti menyiapkan server, mengelola dependensi, menangani database, dan banyak lagi.
Itulah mengapa Spring Boot adalah pengubah permainan. Spring Boot adalah kerangka kerja yang menyederhanakan pengembangan web dengan Java. Ia menyediakan fitur-fitur seperti konfigurasi otomatis, server tertanam, dependensi pemula, dan banyak lagi. Dengan Spring Boot, Anda dapat fokus menulis logika bisnis Anda, daripada berurusan dengan kode boilerplate.
Tetapi membuat aplikasi web atau layanan mikro tidaklah cukup. Anda juga perlu mengujinya. Pengujian sangat penting untuk memastikan kualitas dan keandalan perangkat lunak Anda. Ini membantu Anda menemukan dan memperbaiki bug, meningkatkan kinerja, dan mencegah kesalahan.
Di situlah Apidog hadir.
Dalam postingan blog ini, Anda akan mempelajari cara membangun dan menguji API Spring Boot dengan Apidog. Anda akan membuat API RESTful sederhana dengan Spring Boot dan mengujinya dengan Apidog.
Apa itu Spring Boot dan mengapa menggunakannya?
Spring Boot adalah kerangka kerja yang menyederhanakan pengembangan aplikasi Spring. Ia menyediakan banyak fitur dan konvensi yang memudahkan untuk membuat, mengonfigurasi, menjalankan, dan menyebarkan aplikasi Spring. Beberapa manfaat menggunakan Spring Boot adalah:
- Ia memiliki sistem manajemen dependensi pemula yang secara otomatis menambahkan pustaka dan versi yang diperlukan untuk proyek Anda.
- Ia memiliki server web tertanam yang memungkinkan Anda menjalankan aplikasi Anda tanpa konfigurasi atau instalasi tambahan apa pun.
- Ia memiliki mekanisme konfigurasi otomatis yang mendeteksi dan menerapkan pengaturan optimal untuk aplikasi Anda berdasarkan dependensi dan lingkungan.
- Ia memiliki dukungan siap produksi yang mencakup fitur-fitur seperti pemeriksaan kesehatan, metrik, pencatatan, dan keamanan.
Dengan Spring Boot, Anda dapat fokus menulis logika bisnis Anda dan membiarkan kerangka kerja menangani sisanya.

Apa itu Apidog dan bagaimana ia dapat membantu Anda menguji API Anda?
Apidog adalah alat yang membantu Anda menguji API Anda dengan cara yang sederhana dan intuitif. Ini memungkinkan Anda untuk terhubung ke API Anda, menjelajahi titik akhir, dan membuat dan menjalankan kasus uji untuk API Anda. Beberapa fitur APIdog adalah:
- Ia memiliki antarmuka pengguna grafis yang memudahkan untuk berinteraksi dengan API Anda dan melihat hasilnya.
- Ia memiliki editor kode yang memungkinkan Anda menulis dan mengedit kasus uji Anda menggunakan JavaScript dan pernyataan Chai.
- Ia memiliki pelari uji yang menjalankan kasus uji Anda dan menunjukkan status, keluaran, dan kesalahan dari setiap uji.
- Ia memiliki generator laporan yang membuat laporan komprehensif dan dapat disesuaikan dari hasil uji Anda.
Dengan Apidog, Anda dapat menguji API Anda dengan cara yang cepat dan andal dan memastikan kualitas dan fungsionalitasnya.

Menyiapkan proyek
Langkah pertama adalah membuat proyek Spring Boot dengan Spring Initializr. Spring Initializr adalah alat web yang menghasilkan struktur dan konfigurasi proyek dasar untuk Anda berdasarkan preferensi Anda. Untuk menggunakan Spring Initializr, ikuti langkah-langkah ini:
Buka https://start.spring.io/ dan isi detail proyek Anda. Untuk contoh ini, saya akan menggunakan pengaturan berikut:
- Proyek: Proyek Maven
- Bahasa: Java
- Spring Boot: 3.2.3
- Metadata Proyek:
- Grup: com.example
- Artefak: apidog-demo
- Nama: apidog-demo
- Deskripsi: Proyek demo untuk Spring Boot
- Nama paket: com.example.apidog-demo
- Pengemasan: Jar
- Java: 17
- Dependensi: Spring Web, Spring Data JPA, H2 Database

Klik tombol GENERATE dan unduh file zip proyek Anda.
Ekstrak file zip dan buka proyek di IDE favorit Anda.
Menambahkan dependensi untuk Spring Web dan Spring Data JPA
Langkah selanjutnya adalah menambahkan dependensi untuk Spring Web dan Spring Data JPA. Spring Web adalah modul yang menyediakan dukungan web penting untuk membangun API RESTful dengan Spring. Spring Data JPA adalah modul yang menyederhanakan akses dan manipulasi data dalam database relasional menggunakan JPA dan Hibernate.
Untuk menambahkan dependensi ini, Anda dapat menggunakan Spring Initializr seperti yang disebutkan di atas, atau Anda dapat secara manual mengedit file pom.xml proyek Anda dan menambahkan dependensi berikut:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Mengonfigurasi properti aplikasi
Langkah selanjutnya adalah mengonfigurasi properti aplikasi. File application.properties adalah file yang berisi pasangan kunci-nilai yang menentukan perilaku dan pengaturan aplikasi Anda. Untuk contoh ini, kita akan menggunakan properti berikut:
# Enable the H2 console for accessing the database
spring.h2.console.enabled=true
# Set the path of the H2 console
spring.h2.console.path=/h2-console
# Set the URL of the database
spring.datasource.url=jdbc:h2:mem:testdb
# Set the username of the database
spring.datasource.username=sa
# Set the password of the database
spring.datasource.password=
# Set the dialect of the database
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# Show the SQL statements in the console
spring.jpa.show-sql=true
# Generate the database schema from the entity classes
spring.jpa.hibernate.ddl-auto=update
# Enable the Swagger UI for documenting the API
springdoc.swagger-ui.enabled=true
# Set the path of the Swagger UI
springdoc.swagger-ui.path=/swagger-ui.html
Membuat API
Langkah selanjutnya adalah membuat API. API akan terdiri dari model domain, repositori, dan pengontrol untuk entitas sederhana yang disebut Buku. Sebuah Buku akan memiliki properti berikut: id, judul, penulis, dan harga.
Membuat model domain dan repositori untuk entitas sederhana
Model domain adalah kelas yang mewakili data dan perilaku entitas. Repositori adalah antarmuka yang memperluas antarmuka JpaRepository dan menyediakan metode untuk mengakses dan memanipulasi data entitas.
Untuk membuat model domain dan repositori untuk entitas Buku, ikuti langkah-langkah ini:
- Buat paket baru bernama com.example.apidogdemo.model dan buat kelas baru bernama Book.java di dalamnya.
- Anotasi kelas dengan @Entity untuk menandainya sebagai entitas JPA dan @Table untuk menentukan nama tabel dalam database.
- Tentukan properti kelas dan anotasi dengan @Id, @GeneratedValue, @Column, dan @NotNull untuk menentukan kunci utama, strategi pembuatan, nama kolom, dan batasan validasi masing-masing.
- Hasilkan getter dan setter, konstruktor, dan metode toString untuk kelas.
Kelas Book.java seharusnya terlihat seperti ini:
package com.example.apidogdemo.model;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Entity
@Table(name = "books")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "title")
@NotNull
private String title;
@Column(name = "author")
@NotNull
private String author;
@Column(name = "price")
@NotNull
private BigDecimal price;
public Book() {
}
public Book(Long id, String title, String author, BigDecimal price) {
this.id = id;
this.title = title;
this.author = author;
this.price = price;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", title='" + title + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
- Buat paket baru bernama com.example.apidogdemo.repository dan buat antarmuka baru bernama BookRepository.java di dalamnya.
- Anotasi antarmuka dengan @Repository untuk menandainya sebagai repositori Spring Data JPA.
- Perluas antarmuka JpaRepository dan tentukan jenis entitas dan jenis kunci utama sebagai parameter generik.
- Secara opsional, Anda dapat menentukan metode khusus untuk meminta data entitas.
Antarmuka BookRepository.java seharusnya terlihat seperti ini:
package com.example.apidogdemo.repository;
import com.example.apidogdemo.model.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
// You can define custom methods here
}
Membuat pengontrol dan menentukan titik akhir untuk operasi CRUD
Pengontrol adalah kelas yang menangani permintaan dan respons API. Pengontrol mendefinisikan titik akhir untuk operasi CRUD (buat, baca, perbarui, dan hapus) untuk entitas.
Untuk membuat pengontrol dan menentukan titik akhir untuk entitas Buku, ikuti langkah-langkah ini:
- Buat paket baru bernama com.example.apidogdemo.controller dan buat kelas baru bernama BookController.java di dalamnya.
- Anotasi kelas dengan @RestController untuk menandainya sebagai pengontrol Spring MVC yang mengembalikan respons JSON.
- Anotasi kelas dengan @RequestMapping untuk menentukan jalur dasar titik akhir.
- Suntikkan instance BookRepository menggunakan anotasi @Autowired.
- Tentukan titik akhir untuk operasi CRUD menggunakan anotasi @GetMapping, @PostMapping, @PutMapping, dan @DeleteMapping dan tentukan jalur dan parameter setiap titik akhir.
- Gunakan kelas ResponseEntity untuk membungkus data respons dan kode status untuk setiap titik akhir.
- Gunakan anotasi @Valid untuk memvalidasi badan permintaan untuk titik akhir buat dan perbarui.
- Gunakan anotasi @ExceptionHandler dan @ResponseStatus untuk menangani pengecualian dan mengembalikan kode status dan pesan yang sesuai.
Kelas BookController.java seharusnya terlihat seperti ini:
package com.example.apidogdemo.controller;
import com.example.apidogdemo.model.Book;
import com.example.apidogdemo.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import javax.validation.Valid;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/books")
public class BookController {
@Autowired
private BookRepository bookRepository;
// Get all books
@GetMapping
public ResponseEntity<List<Book>> getAllBooks() {
List<Book> books = bookRepository.findAll();
return new ResponseEntity<>(books, HttpStatus.OK);
}
// Get a book by id
@GetMapping("/{id}")
public ResponseEntity<Book> getBookById(@PathVariable Long id) {
Optional<Book> book = bookRepository.findById(id);
if (book.isPresent()) {
return new ResponseEntity<>(book.get(), HttpStatus.OK);
} else {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found");
}
}
// Create a book
@PostMapping
public ResponseEntity<Book> createBook(@Valid @RequestBody Book book) {
Book savedBook = bookRepository.save(book);
return new ResponseEntity<>(savedBook, HttpStatus.CREATED);
}
// Update a book by id
@PutMapping("/{id}")
public ResponseEntity<Book> updateBook(@PathVariable Long id, @Valid @RequestBody Book book) {
Optional<Book> existingBook = bookRepository.findById(id);
if (existingBook.isPresent()) {
book.setId(id);
Book updatedBook = bookRepository.save(book);
return new ResponseEntity<>(updatedBook, HttpStatus.OK);
} else {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found");
}
}
// Delete a book by id
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteBook(@PathVariable Long id) {
Optional<Book> existingBook = bookRepository.findById(id);
if (existingBook.isPresent()) {
bookRepository.deleteById(id);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} else {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found");
}
}
// Handle the validation exceptions
@ExceptionHandler(javax.validation.ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleValidationExceptions(javax.validation.ConstraintViolationException ex) {
return ex.getMessage();
}
}
Menguji API Spring boot dengan APIdog
Langkah terakhir adalah menguji API dengan Apidog. Apidog adalah alat yang membantu Anda menguji API Anda dengan cara yang sederhana dan intuitif. Ini memungkinkan Anda untuk terhubung ke API Anda, menjelajahi titik akhir, dan membuat dan menjalankan kasus uji untuk API Anda.
Untuk menguji API dengan Apidog, ikuti langkah-langkah ini:
- Luncurkan Apidog dan buat proyek baru dengan mengklik tombol Proyek Baru.

- Masukkan nama dan deskripsi proyek Anda dan klik tombol Buat.

- Masukkan URL dasar API Anda dan klik tombol Hubungkan.

- Anda dapat melihat daftar titik akhir API Anda di panel kiri. Anda dapat mengklik setiap titik akhir untuk melihat detail dan contoh di panel kanan.

- Anda dapat membuat dan menjalankan kasus uji untuk API Anda dengan mengklik tab Kasus Uji di panel kanan. Anda dapat menggunakan editor kode untuk menulis dan mengedit kasus uji Anda menggunakan JavaScript dan pernyataan Chai.


Anda dapat menggunakan pelari uji untuk menjalankan kasus uji Anda dan melihat status, keluaran, dan kesalahan dari setiap uji. Anda dapat menggunakan generator laporan untuk membuat laporan komprehensif dan dapat disesuaikan dari hasil uji Anda.
Kesimpulan
Dalam postingan blog ini, Anda telah mempelajari cara membangun dan menguji API Spring Boot dengan Apidog. Anda telah membuat API RESTful sederhana dengan Spring Boot dan mengujinya dengan Apidog.
Spring Boot adalah kerangka kerja yang menyederhanakan pengembangan web dengan Java. Ia menyediakan fitur-fitur seperti konfigurasi otomatis, server tertanam, dependensi pemula, dan banyak lagi. Dengan Spring Boot, Anda dapat fokus menulis logika bisnis Anda, daripada berurusan dengan kode boilerplate.
Apidog adalah alat yang membantu Anda menguji dan men-debug API Anda. Ini memungkinkan Anda untuk terhubung ke API Anda dan menjelajahi titik akhir, membuat dan menjalankan kasus uji, dan menghasilkan laporan. Dengan Apidog, Anda dapat menguji API Anda lebih cepat dan lebih mudah, tanpa menulis kode apa pun.



