Тёмный

Idempotentność API 

DevMentors
Подписаться 7 тыс.
Просмотров 3,7 тыс.
50% 1

👨‍🔬 Idempotentność to pojęcie, które ma ponad 150 lat, i mimo swoich korzeni w matematyce, jesteśmy w stanie wskazać również wiele zachowań w otaczającym nas świecie, które wykazują idempotentne właściwości, tzn. możliwość wielokrotnego wykonania pewnej operacji, bez zmiany oryginalnego wyniku.
❓ Natomiast jak to wszystko ma się do szeroko pojętego IT oraz programowania? Co charakteryzuje system, komponent, bądź metodę, zachowującą się w sposób idempotentny? Jakie korzyści możemy uzyskać dzięki zaaplikowaniu tej właściwości podczas projektowania naszych aplikacji, API i jak robią to inni?
📑 Na te oraz inne pytania poszukamy odpowiedzi w tym materiale.
Materiał o dekoratorze:
• Wzorzec DEKORATOR (ora...
Timecodes:
00:00:00 - Intro
00:00:19 - Idempotentność - historia, definicja i przykłady
00:02:50 - Idempotentna baza danych
00:04:03 - Właściwości CQS, CQRS
00:05:30 - Specyfikacja HTTP i projektowanie Web API
00:11:08 - Przykładowe Web API z idempotentnym GET, PUT, DELETE
00:21:52 - Czy i kiedy POST może być idempotentny?
00:28:14 - Implementacja metody POST z Idempotency-Key
00:49:45 - Outro
Zapraszamy również na:
⚡️ Discord: devmentors.io/discord-pl
⚡️ Instagram: / devmentors_pl
⚡️ TikTok: / devmentors
⚡️ Twitter: / dev_mentors_pl

Опубликовано:

 

1 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 15   
@michaczekaj199
@michaczekaj199 9 месяцев назад
Spoko materiał, jak zawsze na wysokim poziomie👍
@CarltonLeatch
@CarltonLeatch 9 месяцев назад
Bardzo podoba mi się nazwa projektu "Szwindel", daje lajka :D
@elpe21
@elpe21 9 месяцев назад
Super ogarniety temat. Unikatowy a nie unikalny brzmi zdecydowanie lepiej ;)
@DevMentorsPL
@DevMentorsPL 9 месяцев назад
To prawda, ładniejsze słowo :D
@krystian8250
@krystian8250 8 месяцев назад
Zrozumiałe wyjaśnienie 😁 może teraz testy kontraktowe?
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Może kiedyś się pojawią, aczkolwiek to jest bardzo rozbudowany temat, prawdopodobnie na kilka godzin materiału :)
@Krzysztof-mg1ur
@Krzysztof-mg1ur 9 месяцев назад
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 9 месяцев назад
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 9 месяцев назад
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 9 месяцев назад
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 9 месяцев назад
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 9 месяцев назад
@@rvN7HD to już podchodzi trochę pod ETag :)
@emadali1906
@emadali1906 9 месяцев назад
Hi, why did you discontinued the English content 😢.?
@DevMentorsPL
@DevMentorsPL 9 месяцев назад
Hey, not enough spare time to run the 2 distinct channels :(
@emadali1906
@emadali1906 9 месяцев назад
​@@DevMentorsPLOkay😢. I will miss your great content. Wish you the best.
Далее
Anulowanie operacji w C# przy użyciu CancellationToken
1:14:25
Co nowego w Entity Framework Core?
59:58
Просмотров 3 тыс.
Штаны легионера
00:44
Просмотров 396 тыс.
Документы для озокомления😂
00:24
async/await, czyli programowanie asynchroniczne w C#
2:28:30
Czym jest EVENT SOURCING?
8:07
Просмотров 2,9 тыс.
Rekrutacja w IT - nasze doświadczenia
34:36
Просмотров 4,8 тыс.
cała prawda o STUDIACH INFORMATYCZNYCH
13:08
Просмотров 94 тыс.
Dlaczego nie lubimy DZIEDZICZENIA?
1:40:40
Просмотров 6 тыс.
BREAKING NEWS 🚨 No more EPOS Gaming Headsets!!
9:21
Dzień Studenta- sonda na MS AGH
8:56
Просмотров 2 тыс.
Na czym polega praca programisty baz danych? #63
13:36