Ответ
Да, REST был основным стилем проектирования API для взаимодействия между клиентскими приложениями (frontend, мобильные) и бэкенд-сервисами, а также иногда между самими сервисами.
Реализация на Spring Boot:
@RestController
@RequestMapping("/api/v1/users") // Базовый путь и версионирование
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<UserResponse> getUser(@PathVariable Long id) {
UserResponse user = userService.getUserById(id);
return ResponseEntity.ok(user); // HTTP 200 OK
}
@PostMapping
public ResponseEntity<UserResponse> createUser(@Valid @RequestBody CreateUserRequest request) {
UserResponse newUser = userService.createUser(request);
// Возвращаем созданный ресурс и ссылку на него
URI location = ServletUriComponentsBuilder
.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(newUser.getId())
.toUri();
return ResponseEntity.created(location).body(newUser); // HTTP 201 Created
}
@PutMapping("/{id}")
public ResponseEntity<UserResponse> updateUser(@PathVariable Long id,
@RequestBody UpdateUserRequest request) {
// ... логика обновления
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
return ResponseEntity.noContent().build(); // HTTP 204 No Content
}
}
Ключевые принципы, которые соблюдались:
- Единообразие интерфейса: Использование стандартных HTTP-методов (
GET,POST,PUT,DELETE,PATCH). - Статус-коды: Корректные HTTP-статусы (200, 201, 204, 400, 404, 500).
- Ресурсо-ориентированность: URL представляют собой ресурсы (
/users,/orders). - Формат данных: Обмен данными в формате JSON.
- Идемпотентность и безопасность:
GET— безопасен,PUT,DELETE— идемпотентны.
Документирование: Для описания API использовался OpenAPI (Swagger), что автоматически генерировало интерактивную документацию.