Sobes.tech
Middle

Je operace DELETE idempotentní?

sobes.tech AI

Odpověď od AI

Ano, je to tak. Opakované provádění operace DELETE se stejným URI povede ke stejnému konečnému stavu zdroje — jeho nepřítomnosti. U první žádosti bude zdroj odstraněn. U následných žádostí již zdroj nebude existovat, ale výsledek (nepřítomnost zdroje) zůstane stejný.

// Příklad idempotentní operace 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}");
        // I když je zdroj již odstraněn (například vrací 404 Not Found),
        // konečný výsledek (nepřítomnost zdroje) bude stejný.
        response.EnsureSuccessStatusCode(); // Může vyvolat výjimku pro stavy mimo úspěšné (2xx)
                                            // Pro kontrolu idempotence lze stavy zpracovávat flexibilněji.
    }
}