Welke methoden kunnen garanderen dat het uitvoeren van een reserveringsoperatie in de REST API bij herhaalde oproepen niet leidt tot een wijziging van de systeemstatus?
Antwoord van AI
sobes.tech AI
Чтобы операция бронирования в REST API была идемпотентной (повторные вызовы не изменяют состояние), можно использовать следующие методы:
-
Использование идемпотентных HTTP-методов — например, PUT или DELETE по определённому ресурсу.
-
Введение уникального идентификатора запроса (idempotency key) — клиент генерирует уникальный ключ для каждой операции бронирования и отправляет его в заголовке или теле запроса. Сервер сохраняет ключ и результат операции, при повторном запросе с тем же ключом возвращает тот же результат без повторного изменения состояния.
-
Проверка существования бронирования перед созданием — сервер проверяет, не было ли уже создано бронирование с такими параметрами, и если да, возвращает существующий ресурс.
Пример использования idempotency key в Java (псевдокод):
@PostMapping("/booking")
public ResponseEntity<?> createBooking(@RequestBody BookingRequest request, @RequestHeader("Idempotency-Key") String key) {
if (bookingService.existsByIdempotencyKey(key)) {
return ResponseEntity.ok(bookingService.getByIdempotencyKey(key));
}
Booking booking = bookingService.createBooking(request, key);
return ResponseEntity.status(HttpStatus.CREATED).body(booking);
}
Такой подход предотвращает дублирование бронирований при повторных запросах.