Ce este idempotența

idempotența

Idempotency este un cuvânt amuzant care adesea îi scoate pe oameni din rutină. Idempotency pare uneori un concept confuz, cel puțin, judecând după definiția academică.







Din punctul de vedere al serviciului RESTful, operațiunea (sau serviciul de apel) este idempotent atunci când clienții pot face același apel în mod repetat la același rezultat, lucrând ca un "setter" în limba de programare. Cu alte cuvinte, crearea unui număr mare de interogări identice are același efect ca o singură interogare. Rețineți că, în timp ce operațiile idempotent produc același rezultat pe server (efecte secundare), răspunsul în sine ar putea să nu fie același (de exemplu, starea resursei poate varia între solicitări).

Metodele PUT și DELETE sunt idempotente prin definiție. Cu toate acestea, există un avertisment la metoda DELETE. Problema este că un succes delete-interogare returnează o stare 200 (OK) sau 204 (nr Conținut), dar cererile ulterioare vor returna întotdeauna un 404 (Not Found), cu excepția cazului în care serviciul nu este configurat pentru a „tag-ul“ resursa ca telecomandă fără a scoate de fapt. Orice ar fi fost, atunci când serviciul este, de fapt șterge resursa, apelul următor nu va găsi această resursă și a returna o stare 404 pe server după fiecare apel pentru a șterge același lucru, dar răspunsuri diferite.







Metodele GET, HEAD, OPTIONS și TRACE sunt definite ca fiind sigure, ceea ce le face și ele idempotent. Citiți secțiunea de siguranță de mai jos.

siguranță

Simplitatea, securitatea înseamnă că apelul prin metoda nu are efecte secundare. Prin urmare, astfel de solicitări (securizate) pot fi efectuate în siguranță de către clienți în mod repetat, fără teama de a schimba starea serverului. Aceasta înseamnă că serviciile trebuie să respecte definiția de securitate pentru operațiile GET, HEAD, OPTIONS și TRACE. În caz contrar, este posibil să se inducă în eroare utilizatorul serviciului și să provoace probleme pentru cache-ul web, motoarele de căutare și alți agenți automați care vor modifica în mod necondiționat starea serverului.

Prin definiție, operațiile sigure sunt idempotent, deoarece acestea duc la același rezultat pe server.

Metodele sigure sunt implementate ca operațiuni numai citite. Cu toate acestea, securitatea nu înseamnă că serverul ar trebui să returneze același rezultat de fiecare dată.







Trimiteți-le prietenilor: