كيفية كتابة REST API بلغة Java في 30 دقيقة: دليل خطوة بخطوة
إنشاء REST API هو أحد المهارات الأساسية لمطور Java الحديث. REST (Representational State Transfer) يسمح ببناء خدمات ويب خفيفة الوزن وقابلة للتوسع وسهلة الفهم. في هذا الدليل، سنقوم بإنشاء REST API كامل باستخدام Spring Boot في 30 دقيقة. ستتعلم كيفية إعداد المشروع، وإنشاء نقاط النهاية للعمل مع المستخدمين، ومعالجة JSON، واختبار API عبر Postman أو المتصفح.
1. ما هو REST API ولماذا هو مطلوب؟
REST API هو نمط معماري يتبادل فيه العميل والخادم البيانات عبر طلبات HTTP. المبادئ الأساسية لـ REST:
- الموارد — كل كائن (مستخدم، منتج، طلب) يتم تمثيله بعنوان URL.
- طرق HTTP — GET (قراءة)، POST (إنشاء)، PUT (تحديث)، DELETE (حذف).
- Stateless — كل طلب يحتوي على جميع المعلومات اللازمة؛ الخادم لا يخزن حالة الجلسة.
- تنسيقات البيانات — غالبًا JSON أو XML.
يستخدم REST API في التطبيقات المحمولة، وواجهات الويب الأمامية، والخدمات المصغرة، وتكامل الأنظمة. في Java، الإطار الأكثر شيوعًا لإنشاء REST API هو Spring Boot — فهو يوفر تعليقات توضيحية جاهزة وتكوينًا تلقائيًا.
2. تحضير مشروع Spring Boot
للبدء، ستحتاج إلى:
- JDK 17 أو أحدث
- IntelliJ IDEA أو أي IDE آخر
- Maven أو Gradle
سنقوم بإنشاء المشروع باستخدام Spring Initializr. اختر:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.0 (أو أحدث إصدار مستقر)
- Dependencies: Spring Web, Spring Boot DevTools
اضغط على "Generate" وقم بفك ضغط الأرشيف. افتح المشروع في IDE. سيكون الهيكل كالتالي:
rest-api-demo/├── src/main/java/com/example/restapidemo/│ ├── RestApiDemoApplication.java│ └── controller/│ └── UserController.java├── src/main/resources/│ └── application.properties└── pom.xml3. إنشاء نموذج البيانات ووحدة التحكم
سنقوم بإنشاء نموذج بسيط User (فئة في الحزمة model):
package com.example.restapidemo.model;
public class User { private Long id; private String name; private String email;
public User() {}
public User(Long id, String name, String email) { this.id = id; this.name = name; this.email = email; }
// Getters and Setters public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}الآن سنقوم بإنشاء وحدة التحكم UserController في الحزمة controller. هذا هو قلب API الخاص بنا:
package com.example.restapidemo.controller;
import com.example.restapidemo.model.User;import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicLong;
@RestController@RequestMapping("/api/users")public class UserController {
private final List<User> users = new ArrayList<>(); private final AtomicLong counter = new AtomicLong();
public UserController() { // Test data users.add(new User(counter.incrementAndGet(), "Alice", "alice@example.com")); users.add(new User(counter.incrementAndGet(), "Bob", "bob@example.com")); }
// GET /api/users — get all users @GetMapping public List<