بالدرس السابق بنينا الـ GET Endpoints للـ Employee. اليوم رح نضيف الـ POST وPUT وDELETE، ونتعرف على أداة مهمة لاختبار الـ APIs.
المتصفح بيقدر فقط يبعث GET Requests، ما بيقدر يبعث POST ولا PUT ولا DELETE. لهيك محتاجين أداة خاصة.
الأداة اللي رح نستخدمها اسمها Bruno. هي:
بديل لـ Postman وInsomnia. نزّلها من موقع usebruno.com واختار نظام التشغيل المناسب.
بعد التنزيل، رح تنشئ Collection جديدة وتسميها مثلاً "Employees Management System"، وتختار مكان لحفظها على جهازك.
الـ POST بنستخدمه لإنشاء موظف جديد. بنضيف الـ Annotation @PostMapping وبنستقبل بيانات الموظف من الـ Request Body:
@PostMapping
public Employee create(@RequestBody Employee employee) {
employee.setId(UUID.randomUUID());
employees.add(employee);
return employee;
}
@PostMapping - بتعرف هالـ Method على طلبات POST لـ /employees@RequestBody - بتحول الـ JSON الجاي بالـ Request Body لـ Object من نوع EmployeeUUID.randomUUID()بالـ Bruno، بنضيف Request جديد من نوع POST على http://localhost:8080/employees، ونحط بالـ Body:
{
"firstName"
اشترك في النشرة البريدية
دروس جديدة، مقالات، وأدوات مباشرة لبريدك.
بعد إرسال الطلب، بيرجع لنا الموظف الجديد مع الـ ID.
الـ PUT بنستخدمه لتحديث موظف موجود. بحتاج لـ ID الموظف من الـ URL، وبيانات التحديث من الـ Body:
@PutMapping("/{employeeId}")
public Employee update(@PathVariable UUID employeeId,
@RequestBody Employee updatedEmployee) {
Optional<Employee> existing = employees.stream()
.filter(emp -> emp.getId().equals(employeeId))
.findFirst();
if (existing.isPresent()) {
Employee emp = existing.get();
emp.setFirstName(updatedEmployee.getFirstName());
emp.setLastName(updatedEmployee.getLastName());
emp.setEmail(updatedEmployee.getEmail());
emp.setPhoneNumber(updatedEmployee.getPhoneNumber());
emp.setPosition(updatedEmployee.getPosition());
return emp;
}
return null;
}بالـ Bruno، بنبعث PUT Request على http://localhost:8080/employees/{id} مع الـ Body الجديد. بعد الإرسال، إذا عملنا GET All Employees بنشوف إن البيانات تغيرت.
الـ DELETE بنستخدمه لحذف موظف بالـ ID:
@DeleteMapping("/{employeeId}")
public void delete(@PathVariable UUID employeeId) {
employees.removeIf(emp -> emp.getId().equals(employeeId));
}removeIf بتحذف من الـ List كل عنصر يحقق الشرط المعطى.
هيك عنا الـ CRUD كامل للـ Employee:
| Method | Endpoint | العملية |
|---|---|---|
GET | /employees | جلب كل الموظفين |
GET | /employees/{id} | جلب موظف بالـ ID |
POST | /employees | إنشاء موظف جديد |
PUT | /employees/{id} | تحديث موظف |
DELETE | /employees/{id} | حذف موظف |
هاي هي البداية. بالدرس الجاي رح نتحدث عن: