Что такое RESTful-сервис?

«Что такое RESTful-сервис?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

RESTful-сервис — это веб-сервис, реализующий архитектурный стиль REST (Representational State Transfer). Его ключевая идея — взаимодействие с ресурсами через стандартные HTTP-методы.

Основные принципы:

  1. Ресурсы: Каждая сущность (пользователь, заказ) — это ресурс с уникальным идентификатором (URI), например, /api/users/123.
  2. HTTP-методы: Операции определяются методом запроса:
    • GET — получение ресурса.
    • POST — создание нового ресурса.
    • PUT / PATCH — полное или частичное обновление.
    • DELETE — удаление ресурса.
  3. Stateless (Без состояния): Сервер не хранит состояние клиента между запросами. Каждый запрос содержит всю необходимую информацию.
  4. Представления ресурсов: Данные передаются в стандартных форматах, обычно JSON или XML.

Пример RESTful-эндпоинта на Spring Boot:

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}") // GET /api/users/42
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        User user = userService.findById(id);
        return ResponseEntity.ok(user); // Возвращает JSON
    }

    @PostMapping // POST /api/users
    public ResponseEntity<User> createUser(@RequestBody UserDto userDto) {
        User created = userService.create(userDto);
        return ResponseEntity.status(HttpStatus.CREATED).body(created);
    }
}

Почему это важно: REST обеспечивает стандартизацию, простоту интеграции, масштабируемость и кэшируемость, что делает его доминирующим стилем для публичных API.