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.
}
}