Sobes.tech
Middle

Je operácia DELETE idempotentná?

sobes.tech AI

Odpoveď od AI

Áno, tak je. Opakované vykonanie operácie DELETE s rovnakým URI povedie k rovnakému konečnému stavu zdroja — jeho neprítomnosti. Pri prvom požiadavke bude zdroj odstránený. Pri ďalších požiadavkách už zdroj nebude existovať, ale výsledok (neprítomnosť zdroja) zostane rovnaký.

// Príklad idempotentnej operácie DELETE s použitím 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}");
        // Aj keď je zdroj už odstránený (napríklad, vracia 404 Not Found),
        // konečný výsledok (neprítomnosť zdroja) bude rovnaký.
        response.EnsureSuccessStatusCode(); // Môže vyvolať výnimku pre stavy mimo úspešných (2xx)
                                            // Na kontrolu idempotentnosti je možné stavy spracovávať flexibilnejšie.
    }
}