Sobes.tech
Middle

Ar DELETE operacija yra idempotentinė?

sobes.tech AI

Atsakymas iš AI

Taip, tai yra. Pakartotinai vykdant tą pačią URI DELETE operaciją, bus pasiektas tas pats galutinis būsenos — resurso nebuvimas. Pirmojo užklausos metu resursas bus ištrintas. Sekančiuose užklausose resursas jau nebebus, tačiau rezultatas (resurso nebuvimas) liks tas pats.

// Pavyzdys idempotentinės DELETE operacijos naudojant 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}");
        // Net jei resursas jau ištrintas (pavyzdžiui, grąžina 404 Not Found),
        // galutinis rezultatas (resurso nebuvimas) bus tas pats.
        response.EnsureSuccessStatusCode(); // Gali išmesti išimtį dėl nesėkmingų būsenų (2xx)
                                            // Idempotentumo patikrai galima tvarkyti būsenas lankstesnį.
    }
}