Sobes.tech
Middle

A DELETE művelet idempotens?

sobes.tech MI

Válasz az MI-től

Igen, ez így van. A DELETE művelet többszöri végrehajtása ugyanazzal az URI-val ugyanahhoz az erőforrás végső állapotához vezet — annak hiányához. Az első kérésnél az erőforrás törlésre kerül. A további kérésnél az erőforrás már nem létezik, de az eredmény (az erőforrás hiánya) ugyanaz marad.

// Példa idempotens DELETE műveletre HttpClient használatával
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}");
        // Még akkor is, ha a erőforrás már törölve lett (pl. 404 Not Found),
        // a végső eredmény (az erőforrás hiánya) ugyanaz lesz.
        response.EnsureSuccessStatusCode(); // Kivételt dobhat sikertelen státuszok esetén (2xx-től eltérő)
                                            // Az idempotencia ellenőrzéséhez rugalmasabban kezelhetők a státuszok.
    }
}