Idempotentność API

Поділитися
Вставка
  • Опубліковано 19 жов 2024

КОМЕНТАРІ • 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 ;)

  • @krystian8250
    @krystian8250 11 місяців тому

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

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +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 11 місяців тому

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