Каковы основные принципы RESTful архитектуры?

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

Ответ

REST (Representational State Transfer) — архитектурный стиль для распределенных систем, основанный на следующих ключевых принципах:

  • Ресурсы и URI: Все сущности (пользователи, заказы) представляются как ресурсы с уникальными идентификаторами (URI), например /api/users или /api/orders/123.
  • Единообразный интерфейс (HTTP-методы): Действия определяются стандартными HTTP-методами:
    • GET — получение ресурса.
    • POST — создание нового ресурса.
    • PUT — полное обновление ресурса.
    • DELETE — удаление ресурса.
    • PATCH — частичное обновление.
  • Stateless (без состояния): Каждый запрос от клиента содержит всю необходимую информацию для его обработки. Сервер не хранит состояние сессии между запросами.
  • Кэширование: Ответы должны явно указывать, можно ли их кэшировать, для повышения производительности.
  • Коды состояния HTTP: Использование стандартных кодов для информирования о результате (200 OK, 201 Created, 404 Not Found, 500 Internal Server Error).

Пример REST-контроллера на Spring Boot:

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        // Логика получения пользователя
        return ResponseEntity.ok(user);
    }

    @PostMapping
    public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
        // Логика создания
        return ResponseEntity.status(HttpStatus.CREATED)
                             .body(savedUser);
    }
}

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