Что такое REST и для чего он используется?

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

Ответ

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

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

  • Единообразие интерфейса: Использование стандартных HTTP-методов (GET, POST, PUT, DELETE, PATCH) для операций CRUD.
  • Stateless (без состояния): Каждый запрос от клиента содержит всю необходимую информацию для его обработки. Сервер не хранит состояние сессии клиента.
  • Кэшируемость: Ответы должны явно указывать, можно ли их кэшировать.
  • Клиент-серверная архитектура: Четкое разделение обязанностей.
  • Слоистая система: Клиент не знает, подключен ли он напрямую к серверу или через промежуточные узлы (прокси, балансировщики).

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

@RestController
@RequestMapping("/api/books")
public class BookController {
    @GetMapping("/{id}")
    public ResponseEntity<Book> getBook(@PathVariable Long id) {
        return bookService.findById(id)
                .map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }

    @PostMapping
    public ResponseEntity<Book> createBook(@Valid @RequestBody Book book) {
        Book savedBook = bookService.save(book);
        return ResponseEntity
                .created(URI.create("/api/books/" + savedBook.getId()))
                .body(savedBook);
    }
}

Для чего нужен: REST обеспечивает стандартный, простой, масштабируемый и независимый от платформы способ интеграции приложений через HTTP, что делает его де-факто стандартом для публичных API.