مقدمة: REST API على Java أبسط مما يبدو
تطوير REST API هو واحد من أكثر المهارات المطلوبة في تطوير الواجهة الخلفية الحديثة. Java، بفضل موثوقيتها ونظامها البيئي الضخم، تظل رائدة في إنشاء APIs الصناعية. يعتقد العديد من المبتدئين أن كتابة REST API على Java أمر صعب ويستغرق وقتًا طويلاً. في الواقع، باستخدام الأداة المناسبة (Spring Boot) يمكنك إنشاء خدمة عاملة في 30 دقيقة.
في هذه المقالة، سنشرح عمليًا كيفية إنشاء REST API كامل على Java بسرعة. سنكتب تطبيقًا صغيرًا لإدارة قائمة الكتب، يدعم عمليات CRUD القياسية: إنشاء وقراءة وتحديث وحذف السجلات. سيكون الكود جاهزًا للتشغيل، ويمكنك اختباره عبر Postman أو المتصفح.
1. إعداد المشروع وتهيئة Spring Boot
أسرع طريقة لإنشاء مشروع هي استخدام Spring Initializr. هذا هو المولد الرسمي الذي ينشئ هيكلًا أوليًا للمشروع بالتبعيات المطلوبة.
1.1. توليد المشروع
انتقل إلى start.spring.io واختر:
- Project: Maven (أو Gradle)
- Language: Java
- Spring Boot: أحدث إصدار مستقر (مثل 3.2.x)
- Group: com.example
- Artifact: bookapi
أضف التبعيات:
Spring Web— لإنشاء REST controllersSpring Data JPA— للعمل مع قاعدة البياناتH2 Database— قاعدة بيانات مدمجة للاختبارات
اضغط على "Generate"، قم بتنزيل الأرشيف وفك ضغطه. افتح المشروع في IntelliJ IDEA أو أي IDE آخر.
1.2. هيكل المشروع
بعد فتح المشروع، سترى الهيكل التالي:
bookapi/├── src/│ ├── main/│ │ ├── java/com/example/bookapi/│ │ │ ├── BookapiApplication.java│ │ │ ├── controller/│ │ │ ├── model/│ │ │ └── repository/│ │ └── resources/│ │ └── application.properties│ └── test/└── pom.xmlأنشئ الحزم controller و model و repository يدويًا — فهذا يسهل التنقل.
2. إنشاء نموذج البيانات والمستودع
لنبدأ بالنموذج — الفئة التي تصف كيان "كتاب".
2.1. فئة Book (Model)
أنشئ ملف Book.java في الحزمة model:
package com.example.bookapi.model;
import jakarta.persistence.*;
@Entity@Table(name = "books")public class Book {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
@Column(nullable = false) private String title;
@Column(nullable = false) private String author;
private int year;
public Book() {}
public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; }
// Getters and Setters 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 int getYear() { return year; } public void setYear(int year) { this.year = year; }}2.2. المستودع (Repository)
أنشئ الواجهة BookRepository.java في الحزمة repository:
package com.example.bookapi.repository;
import com.example.bookapi.model.Book;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;
import java.util.L