Middle
Czy operacja DELETE jest idempotentna?
sobes.tech AI
Odpowiedź od AI
Tak, to jest. Wielokrotne wykonanie operacji DELETE z tym samym URI doprowadzi do tego samego końcowego stanu zasobu — jego braku. W przypadku pierwszego żądania zasób zostanie usunięty. W kolejnych żądaniach zasób już nie będzie istniał, ale wynik (brak zasobu) pozostanie taki sam.
// Przykład idempotentnej operacji DELETE z użyciem HttpClient
using System.Net.Http;
using System.Threading.Tasks;
public class ResourceServiceClient
{
private readonly HttpClient _httpClient;
public ResourceServiceClient(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task DeleteResourceAsync(int resourceId)
{
var response = await _httpClient.DeleteAsync($"api/resources/{resourceId}");
// Nawet jeśli zasób został już usunięty (np. zwraca 404 Not Found),
// końcowy rezultat (brak zasobu) będzie taki sam.
response.EnsureSuccessStatusCode(); // Może rzucić wyjątkiem dla statusów innych niż sukces (2xx)
// Aby sprawdzić idempotentność, można obsługiwać statusy bardziej elastycznie.
}
}