كيفية كتابة REST API بلغة Java في 30 دقيقة
تطوير الويب الحديث لا يمكن تصوره بدون REST API — النمط المعماري الذي يسمح للعملاء والخوادم بتبادل البيانات عبر بروتوكول HTTP. تظل Java، بفضل موثوقيتها ونظامها البيئي الضخم، واحدة من أفضل اللغات لإنشاء خدمات الواجهة الخلفية. في هذه المقالة، سنعرض كيف يمكنك كتابة REST API كامل بلغة Java في 30 دقيقة باستخدام Spring Boot — الإطار الأكثر شيوعًا للخدمات المصغرة. ستقوم بإنشاء خدمة CRUD بسيطة لإدارة قائمة المهام (Todo List)، والتي يمكن نشرها واختبارها فورًا.
ما هو REST API ولماذا Java؟
REST (Representational State Transfer) — هو مجموعة من المبادئ حيث يكون لكل مورد (مثل مستخدم أو مهمة أو منتج) عنوان URL فريد، ويتم التفاعل عبر طرق HTTP القياسية: GET (استرجاع)، POST (إنشاء)، PUT (تحديث)، و DELETE (حذف). توفر Java مع إطار Spring Boot تعليقات توضيحية وأدوات جاهزة لتنفيذ REST API في دقائق معدودة. لست بحاجة إلى تحليل JSON يدويًا أو تكوين الخادم — كل هذا يقوم به Spring.
دليل خطوة بخطوة: كتابة REST API بلغة Java في 30 دقيقة
الخطوة 1. إعداد المشروع والتبعيات
أسرع طريقة للبدء هي استخدام Spring Initializr. اختر المعلمات التالية:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.0 (أو أحدث إصدار مستقر)
- Dependencies: Spring Web, Spring Data JPA, H2 Database
اضغط على "Generate"، قم بتنزيل ملف ZIP وفك ضغطه. افتح المشروع في بيئة التطوير المتكاملة الخاصة بك (IntelliJ IDEA, Eclipse أو VS Code). يجب أن يحتوي ملف pom.xml على التبعيات التالية:
<dependencies> <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></dependencies>قاعدة بيانات H2 هي نظام إدارة قواعد بيانات مدمج في الذاكرة (in-memory) ولا يتطلب تثبيتًا. للإنتاج، ستستبدلها بـ PostgreSQL أو MySQL.
الخطوة 2. إنشاء نموذج البيانات (Entity)
أنشئ حزمة model وفيها الفئة TodoItem.java. ستكون هذه الكيان الذي يتم تعيينه إلى جدول في قاعدة البيانات.
package com.example.demo.model;
import jakarta.persistence.*;
@Entity@Table(name = "todos")public class TodoItem {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
@Column(nullable = false) private String title;
private boolean completed;
// المنشئات public TodoItem() {}
public TodoItem(String title, boolean completed) { this.title = title; this.completed = completed; }
// الدوال الواصلة (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 boolean isCompleted() { return completed; } public void setCompleted(boolean completed) { this.completed = completed; }}هنا نستخدم تعليقات JPA التوضيحية: @Entity تخبر Spring أن الفئة هي جدول، @Id هو المفتاح الأساسي، و @GeneratedValue هو التوليد التلقائي للمعرف.