Idempotentność API

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.พ. 2025

ความคิดเห็น • 15

  • @michaczekaj199
    @michaczekaj199 ปีที่แล้ว

    Spoko materiał, jak zawsze na wysokim poziomie👍

  • @CarltonLeatch
    @CarltonLeatch ปีที่แล้ว

    Bardzo podoba mi się nazwa projektu "Szwindel", daje lajka :D

  • @elpe21
    @elpe21 ปีที่แล้ว

    Super ogarniety temat. Unikatowy a nie unikalny brzmi zdecydowanie lepiej ;)

    • @DevMentorsPL
      @DevMentorsPL  ปีที่แล้ว +1

      To prawda, ładniejsze słowo :D

  • @krystian8250
    @krystian8250 ปีที่แล้ว

    Zrozumiałe wyjaśnienie 😁 może teraz testy kontraktowe?

    • @DevMentorsPL
      @DevMentorsPL  ปีที่แล้ว +1

      Może kiedyś się pojawią, aczkolwiek to jest bardzo rozbudowany temat, prawdopodobnie na kilka godzin materiału :)

  • @Krzysztof-mg1ur
    @Krzysztof-mg1ur ปีที่แล้ว

    Klucz dodawany jest do cache przed wykonaniem operacji w API, co w sytuacji gdy sytuacja się nie powiedzie w API, a user kliknął X razy i zamiast dostać error , to dostaje 200 bo klucz był już w cache?

    • @DevMentorsPL
      @DevMentorsPL  ปีที่แล้ว

      Tak jak to zostało wspomniane, dla uproszczenia przykładu całość była trzymana w pamięci, ale docelowo najlepiej mieć to wszystko w globalnej transakcji (tzn. zapis klucza + zmianę stanu systemu).

  • @MrEloska
    @MrEloska ปีที่แล้ว

    A co w momencie gdy obok customera mamy np. datę utworzenia/edycji.
    Wtedy każdorazowe wysłanie PUTa zmieni tą datę „na inną” => nie jest to idempotentne?
    Jak to traktować :D?

    • @DevMentorsPL
      @DevMentorsPL  ปีที่แล้ว +2

      Weź pod uwagę, że to jest całkowicie poboczna operacja związana np. z audytem operacji, niebędącą składową logiki aplikacyjnej/biznesowej, którą spodziewa się wykonać użytkownik w swoim żądaniu - czy zmienisz tę datę czy też nie, nie będzie miało praktycznie żadnego znaczenia. Podobnie można uznać, że np. GET nie jest idempotentny (albo tak naprawdę dowolna metoda, wychodząc poza specyfikację HTTP), w momencie gdy np. loguje informacje o zapytaniu :)

    • @rvN7HD
      @rvN7HD ปีที่แล้ว

      Według mnie to musisz określić jakie wartości są idempotentne tak by ten PUT mógł zostać uznany za "unikalny". Nie wiem czy dobrze zrozumiałem, ale z drugiej strony API mogłoby "obliczyć" taki klucz na podstawie podanych wartości z wybranych property. W tym przypadku bierzemy customera, sprawdzamy ten klucz biorąc pod uwagę wybrane "stałe wartości", które będą mogły porównać klucz z tym trzymanym w cachu czy gdziekolwiek indziej. Patrząc prostolinijnie na twoje pytanie, ja bym uznał, że nie jest idempotentne.

    • @DevMentorsPL
      @DevMentorsPL  ปีที่แล้ว

      @@rvN7HD to już podchodzi trochę pod ETag :)

  • @emadali1906
    @emadali1906 ปีที่แล้ว

    Hi, why did you discontinued the English content 😢.?

    • @DevMentorsPL
      @DevMentorsPL  ปีที่แล้ว

      Hey, not enough spare time to run the 2 distinct channels :(

    • @emadali1906
      @emadali1906 ปีที่แล้ว

      ​@@DevMentorsPLOkay😢. I will miss your great content. Wish you the best.