Wpis z mikrobloga

Bardzo często od osób ze swojej społeczności otrzymuję przemycone print screeny z pytaniami, lub treści zadań programistycznych, które pojawiły się na rozmowie kwalifikacyjnej. Wszystko po to, aby jednoznacznie rozwiać wątpliwości i znaleźć odpowiedź na problematyczne pytania ( ͡° ͜ʖ ͡°)

Jedno z takich pytań nawiązywało do REST API i polegało na tym, aby omówić idempotentność oraz wskazać które metody protokołu HTTP mają tę właściwość? ( ͡° ͜ʖ ͡°)

Osoby chcące znać pełną odpowiedź już teraz odsyłam do mojego artykułu, gdzie opublikowałem mały spojler z przykładami Dodatkowo kluczowe zagadnienia i zasada działania REST API (jest również wersja wideo) ➜ https://bykowski.pl/rest-api-efektywna-droga-do-zrozumienia/

#programowanie #naukaprogramowania #java #backend #technologia #informatyk #ciekawostki #jvm #byczazagroda #framework #spring #kariera #springboot #rest

Czy metoda PATCH jest idempotentna?

  • Tak 23.5% (16)
  • Nie 30.9% (21)
  • A co to jest idempotentność? 45.6% (31)

Oddanych głosów: 68

  • 15
  • Odpowiedz
W większości przypadków jest idempotentny, jednak są przypadki kiedy jego stosowanie może być idempotentne

@SoftBull: gramatyka. W większości tak, jednak są przypadki kiedy tak??
  • Odpowiedz
przypadków jest idempotentny, jednak są przypadki kiedy jego stosowanie może być idemp


@eloar: W większości przypadków jest idempotentny, jednak są przypadki kiedy jego stosowanie może być nieidempotentne
  • Odpowiedz
@SoftBull: Pierdoła do której może się przyczepić tylko taki debil jak ja, ale to co nazywasz endpoint'em bardziej fachowo nazywa się w reście po prostu URI (Uniform Resource Identifier) - czyli identyfikator zasobu. I komunikacja REST'owa polega po prostu na podawaniu identyfikatorów. URI jest identyfikatorem zasobu, a nie ID. Ale może tak prościej ¯\_(ツ)_/¯
  • Odpowiedz
URI


@m944: hej, myślę, że nie ma powodu dla którego tak siebie nazywasz :) Dobrze myślisz. Doprecyzowując, to zgadza się URI jest identyfikatorem zasobu. Natomiast kolekcje są wystawiane na danym endpoincie.
Czyli mając pojazdy, to wystawimy je na endpoincie /cars mając studentów wystawimy na /students. Czasem wielu osób zamiennie nazywa endpoint z path. Jednak osobiście preferuje endpoint, bo wiadomo, że tyczy się metody webowej. Dla odróżnienia przyjład URI to
http:localhost:8080/cars/1
  • Odpowiedz
@SoftBull: konstrukcja zdania. napisałeś że w większości przypadków jest, potem użyłeś łącznika "jednak", który jest zapowiedzią zaprzeczenia i napisałeś dalej "może być", czyli w skrócie "true, ale może też true".

co do dyskusji uri/endpoint, to uri identyfikuje zasób, a to czego używamy w REST, to zasobów. Słowo endpoint chyba miało się oryginalnie odnosić do "końcówek" jak w UML w diagramie interfejsów. API wystawia ileś zasobów jak /cars i
  • Odpowiedz
jednak


@eloar: sprostowałem to poprzedniej wiadomości do Ciebie, chyba, że jest coś czego jeszcze nie wiedzę? Może dlatego, że już późno, albo po czasie miszkania w norwegii już zapomniałem polskiego ¯_(ツ)_/¯
  • Odpowiedz
@SoftBull: ja rozumiem sens, chciałeś napisać, że ogólnie ta metoda jest, ale nie zawsze. po prostu w drugiej części zabrakło zaprzeczenia. Powinno być:

W większości przypadków jest idempotentny, jednak są przypadki kiedy jego stosowanie może nie być idempotentne


zrozumiałem to i w samym arcie, chodziło o wskazanie błędu gramatycznego w tekście, nie że nie rozumiem co próbujesz przekazać.
  • Odpowiedz
W większości przypadków jest idempotentny, jednak są przypadki kiedy jego stosowanie może nie być idempotentne


@eloar: dobra przyjmuje, jutro poprawię zgdonie z Twoimi wskazówkami, dzięki :)
  • Odpowiedz
IDEMPOTENTNA


@SoftBull: a jakie to ma znaczenie? Brzmi trochę jak sztuka dla sztuki. Jak chcę używam operacji mutującej to po to, żeby zmieniać stan, wołanie patcha/puta kilka razy, żeby osiągnąć ten sam wynik jest bez sensu
  • Odpowiedz
@Saly: i masz racje, wywoływanie metod restowych po kilka razy dla osiągnięcia rezultatu mija się z celem. Jednak różne są przypadki. Czasem może być tak, że wyślesz request i z jakiegoś wzgledu nie dostaniesz potwierdzenia. Wówczas można się zanastanawiać, czy dane wywołanie się powiodło czy nie, czy bezpiecznie można wywołać je ponowić czy też nie.
  • Odpowiedz
@Saly: W dzisiejszych czasach jak web developerka wygląda to faktycznie nie robi większego znaczenia, ale dla perfekcjonistów ma. Idempotentność to jedna z właściwości o którą dzisiaj tak maniakalnie programiści funkcyjni zabiegają zaraz obok "referential transparency", "memoizable" i możliwość bycia "lazy". Są to pewne właściwości, które przychodzą, ze swoimi benefitami. Ostatecznie, w idealistycznym kodzie chodzi o to, żeby ukryć wywołania REST, i posługiwać się jakby były zwyklymi metodami i nie przejmować się
  • Odpowiedz