Membuat REST API dengan Spring Boot

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

Tiga lapisan

Diagram: Controller menerima permintaan HTTP, meneruskannya ke Service, dan Service memakai Repository untuk mengakses basis data
Diagram: Controller menerima permintaan HTTP, meneruskannya ke Service, dan Service memakai Repository untuk mengakses basis data

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

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.