نقطة نهاية REST في Spring Boot هي دالة (method) على @RestController، مرتبطة بفعل (verb) HTTP ومسار. @RestController = @Controller + @ResponseBody، لذا تُسلسَل القيم المُعادة مباشرة إلى جسم الاستجابة (JSON عبر Jackson) بدل أن تُحلّ إلى view.
نقطة نهاية REST في Spring Boot هي دالة (method) على @RestController، مرتبطة بفعل (verb) HTTP ومسار. @RestController = @Controller + @ResponseBody، لذا تُسلسَل القيم المُعادة مباشرة إلى جسم الاستجابة (JSON عبر Jackson) بدل أن تُحلّ إلى view.
@RestController
@RequestMapping("/api/users") // المسار الأساس لكل دالة أدناه
public class UserController {
private final UserService service;
public UserController(UserService service) { this.service = service; }
@GetMapping("/{id}") // GET /api/users/42
public UserDto get(@PathVariable Long id) { // اربط {id} من الـ URL
return service.findById(id); // الكائن المُعاد -> JSON
}
@PostMapping // POST /api/users
@ResponseStatus(HttpStatus.CREATED) // 201 بدل 200
public UserDto create(@Valid @RequestBody UserDto body) { // JSON -> كائن
return service.create(body);
}
@GetMapping // GET /api/users?role=admin
public List<UserDto> list(@RequestParam(required = false) String role) {
return service.findByRole(role);
}
}
التعليقات الأساسية: @PathVariable يسحب قيمة من المسار، و@RequestParam يقرأ معامل سلسلة الاستعلام (query-string)، و@RequestBody يفكّ تسلسل حمولة الـ JSON. إضافة @Valid تُشغّل التحقق (Bean Validation) (@NotNull، @Email…) على الـ DTO الوارد قبل تشغيل دالتك.
@GetMapping("/{id}")
public ResponseEntity<UserDto> get(@PathVariable Long id) {
return service.find(id)
.map(ResponseEntity::ok) // 200 + جسم
.orElse(ResponseEntity.notFound().build()); // 404، بلا جسم
}
هذا عمل الخلفية اليومي، لذا يتوقّع المُحاورون طلاقة. الإجابات القوية تذكر استخدام DTOs بدل كشف كيانات JPA، والتحقق من المدخلات بـ @Valid، وإعادة رموز حالة صحيحة بـ ResponseEntity — وهو الفرق بين نقطة نهاية للعِب وAPI حقيقي.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع