Встречается на собеседованиях • сегодня
Как обеспечить идемпотентность данных при реализации RESTful сервиса для бронирования такси
Идемпотентность в REST API означает, что повторные одинаковые запросы не изменяют состояние системы. Для бронирования такси можно использовать следующие подходы:
1. **Idempotency-Key** - клиент передает уникальный ключ в заголовке, сервер сохраняет его и результат обработки первого запроса:
```java
@PostMapping("/bookings")
public ResponseEntity createBooking(
@RequestBody BookingRequest request,
@RequestHeader("Idempotency-Key") String idempotencyKey) {
if (bookingService.existsByIdempotencyKey(idempotencyKey)) {
return ResponseEntity.ok(bookingService.getByKey(idempotencyKey));
}
// Создание брони
}
```
2. **PUT вместо POST** - если бронь имеет уникальный идентификатор заранее:
```java
@PutMapping("/bookings/{id}")
public Booking updateBooking(@PathVariable String id, @RequestBody Booking booking) {
// Создание или обновление брони с указанным ID
}
```
3. **Оптимистичная блокировка** - проверка версии ресурса через ETag.
Важно также учитывать временные рамки действия идемпотентности и очищать старые ключи.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы