Ответ
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.