Membuat REST API dengan Spring Boot
Spring Boot adalah framework Java yang membuat proyek server cepat berjalan. Sebagian besar pengaturan default sudah dikonfigurasi: server Tomcat yang tertanam, akses basis data, dan konversi JSON. Artikel ini membangun REST API kecil dalam tiga lapisan: Controller, Service, dan Repository.
Catatan pengujian: komputer yang dipakai untuk menulis artikel ini tidak memiliki Maven atau Gradle, dan pengunduhan pustaka Spring belum diuji di sini. Kode di bawah adalah pola standar. Jalankan sendiri dan periksa hasilnya sebelum dipakai sungguhan.
Yang Anda butuhkan
- JDK 17 atau lebih baru
- Maven atau Gradle
- VS Code dengan ekstensi Spring Boot, atau IntelliJ IDEA
Tiga lapisan
Langkah 1: buat proyek
Buka https://start.spring.io, pilih Maven dan Java 17, tambahkan dependensi Spring Web dan Spring Data JPA, lalu buat dan ekstrak proyeknya.
Langkah 2: kelas data
package com.example.demo;
import jakarta.persistence.*;
@Entity
public class Note {
@Id
@GeneratedValue
private Long id;
private String title;
public Note() {}
public Note(String title) { this.title = title; }
public Long getId() { return id; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
}
Langkah 3: repository
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface NoteRepository extends JpaRepository<Note, Long> {
}
Spring Data menyediakan metode dasar seperti `findAll`, `save`, dan `deleteById` secara otomatis melalui `JpaRepository`.
Langkah 4: service
package com.example.demo;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class NoteService {
private final NoteRepository repository;
public NoteService(NoteRepository repository) {
this.repository = repository;
}
public List<Note> all() {
return repository.findAll();
}
public Note create(String title) {
return repository.save(new Note(title));
}
}
Langkah 5: controller
package com.example.demo;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/notes")
public class NoteController {
private final NoteService service;
public NoteController(NoteService service) {
this.service = service;
}
@GetMapping
public List<Note> list() {
return service.all();
}
@PostMapping
public Note create(@RequestBody Note body) {
return service.create(body.getTitle());
}
}
Langkah 6: jalankan dan uji
./mvnw spring-boot:run
Uji dengan curl:
curl -X POST http://localhost:8080/api/notes -H "Content-Type: application/json" -d "{\"title\":\"Beli kopi\"}"
curl http://localhost:8080/api/notes
Kesalahan umum
- **Nama package tidak sesuai dengan struktur folder:** Spring menemukan kelas dari package utama, jadi letakkan kelas Anda di bawah package yang sama dengan kelas yang diberi anotasi `@SpringBootApplication`.
- **Driver basis data belum ditambahkan:** koneksi akan gagal. Tambahkan driver dan atur `application.properties`.
- **Input yang tidak valid disimpan tanpa pemeriksaan:** gunakan Bean Validation untuk memeriksa data sebelum disimpan.
Langkah berikutnya
Tambahkan validasi input, pusatkan penanganan error dengan `@ControllerAdvice`, dan uji service dengan JUnit.
Ringkasan
Spring Boot mengatur REST API dalam tiga lapisan. Controller menerima permintaan, Service menyimpan logika, dan Repository berbicara dengan basis data. Pemisahan ini membuat kode lebih mudah diuji dan dipelihara.